r - 检查变量并根据组所属对它们进行分组

标签 r

我想检查变量并根据它们所属的组对它们进行分组。如果它们同时属于这两个组,则会用 “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/

相关文章:

r - 顶级类别的一个热编码,NA,其余的归入 R 中的 'others'

r - 将大量行转换为一列?

r - 使用 dplyr 包进行过滤

R ggplot2错误: stacking not well defined when ymin! =0

r - 选择由 R 中的随机向量指定的列

regex - 使用多个匹配模式标记/分类字符串列

r - 制作堆叠矩形而不是列的直方图

r - 按因子列估算 data.frame 组中的变量

r - S3 类的这些方括号是什么?

R:未构建包小插图