【问题标题】:Select and count the number of duplicate items with two different outcome values?选择并计算具有两个不同结果值的重复项的数量?
【发布时间】:2012-01-22 10:10:57
【问题描述】:

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

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

当 id2 连接到同一个 id1 时,我想选择其中 id2 具有 10 和 20 的行,例如,'x' 有两个观察值连接到 id1 ('a') 有两个不同的var1 值(“10”和“20”)。

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

【问题讨论】:

    标签: r subset


    【解决方案1】:

    一种方法是使用来自plyr 包的ddply。像这样的:

    > 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
    

    【讨论】:

    • 工作就像一个魅力。谢谢!
    猜你喜欢
    • 2019-08-03
    • 2018-05-28
    • 1970-01-01
    • 2021-01-30
    • 2019-11-20
    • 1970-01-01
    • 2019-01-03
    • 2021-12-04
    • 2012-08-05
    相关资源
    最近更新 更多