R:数据清理

时间:2014-03-30 17:03:15

标签: r

我希望有人可以帮我用R清理我的数据。

示例数据:

seqno   rectyp  ps04
1       1   
1       1   
1       89  
1       89  
2       1       0
2       1       1
2       1   
2       90  
2       89  
3       1   
3       1   
3       1   
3       90  
3       90  
3       89      1
3       89      5
3       89      6
3       89  

我想要为某个ps04==1值查找值rectype==1seqno。找到后,它会用值seqno填充1的整行。预期的产出将是:

seqno   rectyp  ps04
1       1   
1       1   
1       89  
1       89  
2       1       1
2       1       1
2       1       1
2       90      1
2       89      1
3       1   
3       1   
3       1   
3       90  
3       90  
3       89      1
3       89      5
3       89      6
3       89  

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

首先看看哪些行符合t$ps04==1 & t$rectyp==1。获取seqno,然后为符合条件的所有行设置i等于TRUE

> i <- t$seqno %in% t$seqno[t$ps04==1 & t$rectyp==1]
> i
 [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> t$ps04[i] <- 1 # set values to 1
> t
   seqno rectyp ps04
1      1      1   NA
2      1      1   NA
3      1     89   NA
4      1     89   NA
5      2      1    1
6      2      1    1
7      2      1    1
8      2     90    1
9      2     89    1
10     3      1   NA
11     3      1   NA
12     3      1   NA
13     3     90   NA
14     3     90   NA
15     3     89    1
16     3     89    5
17     3     89    6
18     3     89   NA