R 尝试用相同的键替换a列的na值,但其中一行有一个值

R 尝试用相同的键替换a列的na值,但其中一行有一个值,r,dplyr,missing-data,R,Dplyr,Missing Data,我有一个数据框 data.frame(Primary_key = c(100,100,100,100,200,200,200) , values= c("buyer",NA,NA,NA,"seller",NA,NA)) 我想得到一个理想的输出 data.frame(Primary_key = c(100,100,100,100,200,200,200) , values= c("buyer","buyer","buyer","buyer","se

我有一个数据框

data.frame(Primary_key = c(100,100,100,100,200,200,200) , 
           values= c("buyer",NA,NA,NA,"seller",NA,NA))
我想得到一个理想的输出

data.frame(Primary_key = c(100,100,100,100,200,200,200) , 
           values= c("buyer","buyer","buyer","buyer","seller","seller","seller"))
这是一个简化版本,原始版本有3个可能的值和10000多个不同的主键

正在考虑一种
dplyr
方法来实现这一点,但有点为难


我正在尝试按主键
分组,然后使用
替换
功能。

您可以同时使用
tidyr::fill
dplyr::group\u by

库(dplyr)
图书馆(tidyr)
df1%>%
分组依据(主键)%>%
填充(值,.direction=“downpup”)
#A tible:10x2
#>#组:主键[4]
#>主键值
#>            
#>  1          50   
#>2100名买家
#>3100买家
#>4100买方
#>5100买方
#>6200卖方
#>7200卖方
#>8200卖方
#>9300两个
#>10300两个
示例数据:此数据考虑实际数据中可能发生的不同情况

df1 <- data.frame(Primary_key = c(50,100,100,100,100,200,200,200,300,300), 
                  values= c(NA, NA,"buyer",NA,NA,"seller",NA,NA,NA,"both"))

df1
library(tidyr);填充(你的数据框,值,.direction=“down”)
如果NA介于两者之间会怎样(NA,buyer,NA,NA)我发布了一个回答,回答了你的评论。
df1 <- data.frame(Primary_key = c(50,100,100,100,100,200,200,200,300,300), 
                  values= c(NA, NA,"buyer",NA,NA,"seller",NA,NA,NA,"both"))