如何检查一列中的值是否与第二个分组变量完全相同?
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
我正在使用 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()
-
df[ave(df$SEX, df$ID, FUN = function(x) length(unique(x))) > 1, ]
ID SEX
3 2 F
4 2 F
5 2 M