选择并计算具有两个不同结果值的重复项目数量?

时间:2011-12-17 00:22:41

标签: r subset

长期追随者,多年来非常感谢您的帮助!我有一个问题,可能有一个简单的答案,但我在谷歌搜索失败,尝试各种子集和括号表示法也感觉很短。我打赌这里有人遇到了类似的问题。

我有一个带有一组重复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)。

我想选择这些案例,并计算整个数据集中有多少这样的案例。提前谢谢!

1 个答案:

答案 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