如何使用True / False标记基于匹配的行集合?

时间:2017-03-23 18:11:29

标签: r matching

使用此R函数,我可以看到行簇的匹配率:

# Matching ratio function
match_ratio <- function(x)
  cbind(x, match_ratio = rowMeans(mapply(`==`, x[1, -1], x[, -1])))

如果它们在行集群中匹配,我还想将每个单元格值标记为True,如果它们不匹配则标记为False。有什么建议?谢谢。

示例输入

ID  Var1  Var2
1   East  Juice
1   East  Soda
2   West  Apple
2   East  Apple  

示例输出

ID  Var1   Var2
1   True   False
1   True   False
2   False  True
2   False  True

因此群集基于ID。 1是2的簇。

1 个答案:

答案 0 :(得分:0)

dplyr方法:

library(dplyr)

df %>% group_by(ID) %>% mutate_all(funs(n_distinct(.) == 1))

     ID  Var1  Var2
  <int> <lgl> <lgl>
1     1  TRUE FALSE
2     1  TRUE FALSE
3     2 FALSE  TRUE
4     2 FALSE  TRUE