gpt4 book ai didi

r - 根据 R 中其他列的类别添加计数器列

转载 作者:行者123 更新时间:2023-12-01 23:41:26 25 4
gpt4 key购买 nike

我正在尝试根据两个分类值的组合向我的数据框添加一个计数器列。例如:

dat <- data.frame(cat1 = c("a", "a", "a", "a", "a", "b", "b", "b", "b"), 
cat2 = c("x", "x", "x", "y", "y", "j", "j", "k", "l"),
Result = c(1, 1, 1, 2, 2, 1, 1, 2, 3))

我用过这个:

dat$Result <- ave(dat$cat1, dat$cat2, FUN=function(x) match(x,sort(unique(x))))

但我有错误。我在其他线程中检查了类似的建议,但答案仅适用于数字列。有人可以给我一个建议吗?谢谢你。

最佳答案

我们可以使用

with(dat, as.numeric(ave(as.character(cat2), cat1,
FUN = function(x) match(x, unique(x)))))

如果 factor 级别已经与“cat2”的顺序相同,则也可以强制转换为 numeric

with(dat, ave(as.numeric(cat2), cat1, FUN = function(x) match(x, unique(x))))

更新

有了新的数据集,

with(dat, as.numeric(ave(as.character(cat2), cat1, FUN = 
function(x) inverse.rle(within.list(rle(x), values <- seq_along(values))))))
#[1] 1 1 1 2 2 1 1 2 3 4

关于r - 根据 R 中其他列的类别添加计数器列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37859698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com