如何检查一列中的值是否与第二个分组变量完全相同?

how to check values in one column are all identical by a second grouping variable?

我正在使用 r 分析一些长格式的数据。我有一列是一个分组变量,其中包含参与者 ID 和另一个包含他们性别的变量。

例如

ID SEX
1   M
1   M
2   F
2   F
2   M

我想检查是否有任何 ID 的性别编码不一致,例如ID=2 以上。有没有办法做到这一点?我一直在玩 dplyr 和 group_by 函数,但我不知所措。任何帮助将不胜感激。

就输出而言,我可能想要一个向量,其中包含所有在 SEX 列中具有不同值的唯一 ID 值。

你可以试试这个。

require(plyr)

df <- data.frame(c(1,1,2,2,2), c('M','M','F','F','M'))
names(df) <- c('ID','SEX')

df2 <- ddply(df,.(ID), mutate, count = length(unique(SEX)))
unique(df2[df2$count > 1,][1])

结果:

ID
2

这是使用 ave() -

的基本 R 灵魂
df[ave(df$SEX, df$ID, FUN = function(x) length(unique(x))) > 1, ]

  ID SEX
3  2   F
4  2   F
5  2   M