R 根据另一列中的值填充列

R 根据另一列中的值填充列,r,match,fill,R,Match,Fill,我有一个df: ID Tag 999 YES 999 100 100 NO 500 我需要将“Tag”值填充到匹配的ID变量中,以便该ID的每个实例都有一个匹配的标记,这样我将得到: ID Tag 999 YES 999 YES 100 NO 100 NO 500 您可以使用ave填充每组na 我使用了ave解决方案-干杯! df$Tag <- with(df, ave(Tag, ID, FUN=function(x) { i <- is.na(x) x[i]

我有一个df:

ID  Tag
999 YES
999 
100
100 NO
500
我需要将“Tag”值填充到匹配的ID变量中,以便该ID的每个实例都有一个匹配的标记,这样我将得到:

ID  Tag
999 YES
999 YES
100 NO 
100 NO
500 

您可以使用
ave
填充每组
na


我使用了ave解决方案-干杯!
df$Tag  <- with(df, ave(Tag, ID, FUN=function(x) {
  i <- is.na(x)
  x[i]  <- x[!i][1]
  x
}))
df
#   ID  Tag
#1 999  YES
#2 999  YES
#3 100   NO
#4 100   NO
#5 500 <NA>
library(dplyr)
library(tidyr)
df %>% group_by(ID) %>% fill(Tag, .direction = "downup")
## A tibble: 5 x 2
## Groups:   ID [3]
#     ID Tag  
#  <int> <fct>
#1   999 YES  
#2   999 YES  
#3   100 NO   
#4   100 NO   
#5   500 NA