Fill NA in R: imput NA in a column X with values from the same ID (column Y ) 对应关系

Fill NA in R: imput NA in a column X with values from same ID (column Y ) correspondance

我有这个数据集(如下所示)

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 函数来填充剩下的内容,但我不知道如何指示相应的索引。 如果有人能如此好心地指出解决这个问题的方法,我提前谢谢你。

您可以使用 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