【问题标题】:Fill in NA with Non-NAs in another dataframe在另一个数据框中用非 NA 填充 NA
【发布时间】:2016-01-26 21:12:01
【问题描述】:

我有三组数据,其中包含两个变量“ID”和“Name”。有没有办法从另一个数据集中填补每个数据集中的缺失,或者创建一个 ID 和名称组合的主数据集?

setA=data.frame(rbind(
                      c("1","Product A"),
                      c("2",NA),
                      c("3",NA),
                      c("4",NA),
                      c("5","Product E")))
names(setA)=c("ID","Name")

setB=data.frame(rbind(
                      c("1","Product A"),
                      c("2",NA),
                      c("3","Product C"),
                      c("4",NA),
                      c("6","Product F")))
names(setB)=c("ID","Name")

setC=data.frame(rbind(
                      c("1",NA),
                      c("2","Product B"),
                      c("3","Product C"),
                      c("4","Product D"),
                      c("6","Product F")))
names(setC)=c("ID","Name")

我试过了,但它两次列出了 ID“3”。我希望 NA 填写“产品 C”。

merge(setA,setB,by=c("ID","Name"),all=T)

我可以仅合并 ID 并将 NA 替换为非 NA,但想知道是否有更直接的方法可以做到这一点?

谢谢!

【问题讨论】:

    标签: r merge na


    【解决方案1】:

    我不知道下面的解决方案是否通用,但根据您的示例,以下代码可以解决问题(假设每个 ID 的 Name 至少存在一次并且它是唯一的):

    setM <- rbind(setA,setB,setC)
    setM <- unique(na.omit(setM))
    

    【讨论】:

      猜你喜欢
      • 2021-12-26
      • 1970-01-01
      • 2023-03-29
      • 2021-08-03
      • 1970-01-01
      • 2022-08-22
      • 2018-04-20
      • 1970-01-01
      • 2018-01-16
      相关资源
      最近更新 更多