使用此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的簇。
答案 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