R中的子集,每人多次观察

时间:2013-06-09 21:11:37

标签: r subset

我有一个数据集,其中一小部分是

     ID time GLUCOSE
1    NA    6      NA
2  1302    0      78
3  1302    6      90
4  1927    0      NA
5  1927    6      NA
6  2121    0      94
7  2121    3      90
8  2121    6     100
9  2121    9      93
10 2121   12      88
11 4022    0      87
12 4022    6      94
13 4022   12      87
14 4867    0     102
15 4867    3     100
16 4867    6     103
17 4867    9      99
18 4867   12     106
19 5351    0     108
20 5351    3     112

我只想保留那些时间0的葡萄糖值高于100的人,但我想保留那些人的所有价值观。因此,对于ID = 4867,我希望保留所有5个值,即使是100以下,因为他在0时的值是102.

TIA

1 个答案:

答案 0 :(得分:4)

我首先获取相关ID,然后对这些ID进行子集,如下所示:

ids <- df$ID[ which( df$time==0 & df$GLUCOSE > 100 ) ]
ids
# [1] 4867 5351

#  We can then subset the dataframe using these IDs and the %in% operator
df[df$ID %in% ids , ]
#    ID time GLUCOSE
#14 4867    0     102
#15 4867    3     100
#16 4867    6     103
#17 4867    9      99
#18 4867   12     106
#19 5351    0     108
#20 5351    3     112