本文介绍了R中组合标准的观测值选择的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个话题可能已经被提出来了,我想这是一个非常简单的解决方案。然而,到目前为止,我还是做不到。假设我有一个数据框(称为"data"),它包含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

我想创建此数据框的子集(称为Data2的新数据框),方法是只选择三个时间点(变量T)中每个时间点都为"YES"(变量Y)的个体,这意味着对于T=1、T=2和T=3,Y="YES"。

我知道组合条件可以通过使用"&;"符号来实现,这可以用来关联3个时间点的条件。然而,我的问题是为每个时间点编写每个条件:例如,如何告诉R我想要在T="1"的Y="yes"的对象?

提前向大家表示感谢。祝您度过愉快的一天

Denis

推荐答案

您可以:

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)

这篇关于R中组合标准的观测值选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 01:55