【发布时间】:2021-12-16 07:54:33
【问题描述】:
我有以下数据集
varA <- c(rep("A",2), rep("B",4))
varB <- c(rep("aaaa",2), rep("bbbb", 3), rep("cccc",1) )
dat <- data.frame(varA, varB)
dat
varA varB
1 A aaaa
2 A aaaa
3 B bbbb
4 B bbbb
5 B bbbb
6 B cccc
我想为每个子组生成 id,例如 varA 中的第一个子组为 1,第二个为 2,依此类推。 Theids 可以在整个数据集中重复,但不能在子组内重复。
这是需要的结果
varA varB res
1 A aaaa 1
2 A aaaa 1
3 B bbbb 1
4 B bbbb 1
5 B bbbb 1
6 B cccc 2
我怎样才能用 R 做到这一点?
我在 dplyr 中尝试了 cur_group_id() 但它对我不起作用...
谢谢!!
【问题讨论】:
-
VarA 在哪里?另外为什么第1组是B bbbb,第2组是B cccc?规则是什么?
-
在你的情况下,因为它是两个变量,所以它是
dat %>% mutate(id = group_indices(., varA, varB)) -
@Sotos 感谢 cmets。规则是 id 必须在 varA 内生成。也就是说,varA 中只有一个子组。所以 id 是 1。在 varB 中有 2 个子组,需要给它们 id 1 和 2。
-
啊,没关系,我错过了 varA 中重复的 ID。 Sotos 有一个很好的答案。
标签: r