根据条件

时间:2015-08-27 00:30:30

标签: r

我的数据框看起来像

> mydata
ID  Observation X    
1      1       3    
1      2       3    
1      3       3    
1      4       3    
2      1       4    
2      2       4    
3      1       8    
3      2       8    
3      3       8

我有一些代码可以计算每个ID的观察数量,确定哪些ID具有满足特定条件的多个观察值(在这种情况下,> = 3个观察值),并返回带有这些ID的向量: / p>

> vals
[1] 1 3

现在我想操纵与这些ID相关联的X值,例如通过向每个值添加1,给出如下数据框:

> mydata
ID  Observation X   
 1      1       4    
 1      2       4    
 1      3       4    
 1      4       4    
 2      1       4    
 2      2       4    
 3      1       9    
 3      2       9    
 3      3       9

我对R很陌生,我不确定如何做到这一点。知道每个ID的X是不变的可能会有所帮助。

1 个答案:

答案 0 :(得分:1)

致电mydata$ID %in% vals会返回TRUEFALSE,以指明每行的ID值是否在vals向量中。当您将其添加到当前mydata$X中的数据时,TRUEFALSE将分别转换为1和0,从而产生所需的结果:

mydata$X <- mydata$X + mydata$ID %in% vals
# mydata
#   ID Observation X
# 1  1           1 4
# 2  1           2 4
# 3  1           3 4
# 4  1           4 4
# 5  2           1 4
# 6  2           2 4
# 7  3           1 9
# 8  3           2 9
# 9  3           3 9