我想检查变量并根据它们所属的组对它们进行分组。如果它们同时属于这两个组,则会用 “X”
标记。
grp1 <- c("A","B","C","D","E")
grp2 <- c("F","G","H","I","J","K")
DF <- data.frame(id = c(1,1,2,3,3), dis = c("A","B","H","B","K"))
DF
id dis
1 1 A
2 1 B
3 2 H
4 3 B
5 3 K
结果应该如下所示:
id dis grp
1 1 A 1
2 1 B 1
3 2 H 2
4 3 B X
5 3 K X
有什么好的想法吗?
最佳答案
通过 ave
的另一个基本 R 选项
within(DF, grp <- ave(dis, id, FUN = function(x) {
if (all(x %in% grp1)) {
"1"
} else if (all(x %in% grp2)) {
"2"
} else {
"x"
}
}))
这给出了
id dis grp
1 1 A 1
2 1 B 1
3 2 H 2
4 3 B x
5 3 K x
关于r - 检查变量并根据组所属对它们进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63160924/