选择观察由R中合成的标准(selection of observations by combinin

2019-11-02 03:51发布

本主题可能已经长大,这是一个相当simpe的解决方案,我猜。 但是我不能让它到现在。 可以说我有一个data.frame(称为“数据”),其中包含10人(ID),关于这一点我收集在3个时间点意见(T)

> data <- data.frame(id = rep(c(1:10), 3),
                     T  = gl(3, 10),
                     X  = sample(1:30),
                     Y  = sample(c("yes", "no"), 30, replace = TRUE),
                     Z  = sample(1:40, 30),
                     Z2 = rnorm(30, mean = 5, sd = 0.5))

    > head(data)
      id T  X   Y  Z       Z2
    1  1 1 10 yes 15 5.993605
    2  2 1 18  no 22 6.096566
    3  3 1  5  no 24 5.101393
    4  4 1 15 yes 18 4.944108
    5  5 1 23  no 34 4.634176
    6  6 1 13  no 27 5.576015

我想通过只选择具有“是”(变量Y)人士为三个时间点(可变T)来创建此data.frame(一个名为DATA2新data.frame)的一个子集,这意味着Y = “是” T = 1和T = 2和T = 3。

我知道,组合的条件可以通过使用“&”符号来实现,而这可以用来涉及的3个时间点的条件。 不过,我的问题是写在每个时间点的每个条件:如何让R,我想科目为其中Y =“是” T =“1”的例子吗?

非常感谢你提前给所有。 祝你有美好的一天,

丹尼斯

Answer 1:

你可以做:

keep.ids <- tapply(data$Y, data$id, FUN = function(x)all(x == "yes"))
subset(data, keep.ids[factor(id)])

或者使用plyr包:

library(plyr)
ddply(data, "id", function(x) if(all(x$Y == "yes")) x else NULL)


文章来源: selection of observations by combining criteria in R
标签: r selection