我有一个像这样的大数据集:
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
...
有没有人知道要实现这个目标?
答案 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