我回过头来问一个问题,我的答案正在研究一个例子,但不是我的数据。来自data.frame"数据"下面提出,个人(id)测试3次(T = 1,2或3),我想建立一个新的data.frame" data2"包含Y变量值为#34;是"在所有三个时间点。
> 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是&#34;是&#34;的行。当T ==&#34; 1&#34;时,然后对T ==&#34; 2&#34;做同样的事情。和T ==&#34; 3&#34;。像那样:
> data1y <- subset(data, T=="1"&Y=="yes")
> data2y <- subset(data, T=="2"&Y=="yes")
> data3y <- subset(data, T=="3"&Y=="yes")
那时,我必须匹配&#34; id&#34;从这3个data.frames中只保留那些匹配所有三个data.frame的数据,将它们放回到新的data.frame中。 最后一步有人可以帮助我吗? 感谢
答案 0 :(得分:1)
来自您的示例数据:
> data[data$T %in% c(1:3) & data$Y=='yes',]
id T X Y Z Z2
1 1 1 20 yes 33 4.802216126170
5 5 1 11 yes 38 4.961652111819
6 6 1 16 yes 39 5.280062964072
8 8 1 9 yes 10 4.390774184018
10 10 1 2 yes 24 5.304658353230
11 1 2 28 yes 16 5.431195694915
12 2 2 10 yes 14 4.719670597678
13 3 2 27 yes 3 4.568885260296
14 4 2 4 yes 32 5.699626145087
15 5 2 19 yes 21 5.378941823200
17 7 2 5 yes 34 5.144265923191
18 8 2 1 yes 8 5.138866423019
19 9 2 29 yes 35 5.938777921967
20 10 2 18 yes 30 5.562200417288
24 4 3 6 yes 23 4.723790836659
26 6 3 25 yes 29 5.915660736770
28 8 3 8 yes 19 5.133772600848
如果这不符合您的要求,请发表评论......