用另一个填充一个数据框

时间:2019-06-03 03:06:33

标签: r tidyr

set.seed(1)
data=data.frame("id"=1:10,
                  "score"=NA)
data1=data.frame("id"=c(1:3,5,7,9,10),
                 "score"=sample(50:100,7))
WANT=data.frame("id"=1:10,
                "score"=c(83,81,53,NA,59,NA,58,NA,99,67))

我有完整的数据框“ data”,但没有第二个数据框“ data1”中每个人的值。但是出于管理原因,我必须使用完整数据。基本上,“ WANT”保持“数据”的结构,但是在可用的地方填充值。

1 个答案:

答案 0 :(得分:1)

这是一个简单的解决方案。

set.seed(1)
data=data.frame("id"=1:10,
                "score"=NA)
data1=data.frame("id"=c(1:3,5,7,9,10),
                 "score"=sample(50:100,7))
WANT=data.frame("id"=1:10,
                "score"=c(83,81,53,NA,59,NA,58,NA,99,67))

library(tidyverse)

data %>%
  select(-score) %>% 
  left_join(data1)

我可能正在联系,但也许你需要。

set.seed(1)
data=data.frame("id"=1:10,
                "score"=sample(50:100,10))
data1=data.frame("id"=c(1:3,5,7,9,10),
                 "score"=sample(50:100,7))
WANT=data.frame("id"=1:10,
                "score"=c(83,81,53,NA,59,NA,58,NA,99,67))

library(tidyverse)

  data %>%
  mutate(score1 = score) %>% 
  select(-score) %>% 
  left_join(data1) %>% 
  mutate(score = if_else(is.na(score),
                        score1,
                        score)) %>% 
  select(-score1)