长期追随者,多年来非常感谢您的帮助!我有一个问题,可能有一个简单的答案,但我在谷歌搜索失败,尝试各种子集和括号表示法也感觉很短。我打赌这里有人遇到了类似的问题。
我有一个带有一组重复ID的长格式数据集。我还有一个第三个变量可能与副本不同。例如,如果您重新创建我的数据集:
x <- c("a", "a", "b", "c", "c", "d", "d", "d")
y <- c("z", "z", "z", "y", "y", "y", "x", "x")
z <- c(10, 20, 10, 10, 10, 10, 10, 20)
df <- cbind(x, y, z)
df <- as.data.frame(df)
names(df) <- c("id1", "id2", "var1")
df
当我们连接到同一个id1时,我想选择其中id2有10和20的行。例如,'x'有两个连接到id1('a')的观察,有两个不同的var1值('10'和'20)。
我想选择这些案例,并计算整个数据集中有多少这样的案例。提前谢谢!
答案 0 :(得分:3)
一种方法是使用ddply
包中的plyr
。像这样:
> library(plyr)
> ddply(df, c('id2', 'id1'), function(x) if(length(unique(x$var1))==2) x)
id1 id2 var1
1 d x 10
2 d x 20
3 a z 10
4 a z 20