我有三组数据,其中包含两个变量“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替换NAs,但是想知道是否有更直接的方法来做它?
谢谢!
答案 0 :(得分:1)
我不知道下面的解决方案是否具有通用性,但根据您的示例,以下代码可以解决这个问题(假设名称对于每个ID至少存在一次并且它是唯一的):
setM <- rbind(setA,setB,setC)
setM <- unique(na.omit(setM))