我已经得到了这个数据集(如下所示)
db <- as.data.frame(cbind(c(1,2,2,3,3,4,4,4,5,5),c('a','b',NA,NA,'i',NA,'d',NA, NA, NA)))
我想用与ID列V1相同的对应来填充V2 NA。最后,我期望这个结果
db <- as.data.frame(cbind(c(1,2,2,3,3,4,4,4,5,5),c('a','b','b','i','i','d','d','d', NA, NA)))
我试着用unique
ID做一个列表db_aux <- as.data.frame(cbind(c(1,2,3,4),c('a','b','i','d')))
但我猜这是必要的apply
函数来填补什么' s left,但我不知道如何指示相应的索引。
您可以使用tidyr
的fill
,方向为上下或上下
library(tidyverse)
db %>%
group_by(V1) %>%
fill(V2, .direction = 'updown')
# A tibble: 10 x 2
# Groups: V1 [5]
V1 V2
<chr> <chr>
1 1 a
2 2 b
3 2 b
4 3 i
5 3 i
6 4 d
7 4 d
8 4 d
9 5 NA
10 5 NA