根据主题ID填写缺失值

时间:2014-03-31 15:32:43

标签: r

我有一个像这样的大数据集:

SUB  DAY BASE  
 1    0    .    
 1    0    . 
 1    0    .   
 1    0    .    
 1    1    3.5   
 1    1    3.5  
 1    2    3.5   
 1    2    3.5    
 2    0    .
 2    0    .
 2    0    .
 2    1    2.3
 2    1    2.3
 2    2    2.3
 2    2    2.3
...

我想用BAS中的值填充BASE中的缺失值。预期的输出应如下所示:

SUB  DAY BASE  
 1    0    3.5    
 1    0    3.5
 1    0    3.5   
 1    0    3.5    
 1    1    3.5   
 1    1    3.5  
 1    2    3.5   
 1    2    3.5    
 2    0    2.3
 2    0    2.3
 2    0    2.3
 2    1    2.3
 2    1    2.3
 2    2    2.3
 2    2    2.3
...

有没有人知道要实现这个目标?

1 个答案:

答案 0 :(得分:2)

如果您的缺失值等于merge,则使用NA(棘手,可能是更好的方法):

dat <- read.table(header = T, text = "SUB  DAY BASE  
1    0    NA   
1    0    NA
1    0    NA
1    0    NA   
1    1    3.5   
1    1    3.5  
1    2    3.5   
1    2    3.5    
2    0    NA
2    0    NA
2    0    NA
2    1    2.3
2    1    2.3
2    2    2.3
2    2    2.3")

> merge(subset(dat, select= -BASE), unique(dat[!is.na(dat$BASE),c("SUB", "BASE")]), by = "SUB")
   SUB DAY BASE
1    1   0  3.5
2    1   0  3.5
3    1   0  3.5
4    1   0  3.5
5    1   1  3.5
6    1   1  3.5
7    1   2  3.5
8    1   2  3.5
9    2   0  2.3
10   2   0  2.3
11   2   0  2.3
12   2   1  2.3
13   2   1  2.3
14   2   2  2.3
15   2   2  2.3