按匹配ID计算缺少的数据

时间:2014-09-20 13:43:23

标签: r

数据集是:

   material      ID1         ID2

1   steel       0085        0081

2   plastics    0082        0087

3   NA          0087        0088

由于第三次观察的ID1与第二次视力的ID2相同。我可以将第三种材料的材料归为“塑料”。我有成千上万的障碍物,并且有很多物质缺失。如何通过r中的方法用材料来填充缺失的数据?非常感谢你。

2 个答案:

答案 0 :(得分:0)

可能有帮助:

 indx <- is.na(dat1$material)
 indx2 <- c(FALSE,dat1$ID1[-1]==dat1$ID2[-nrow(dat1)]) 
 dat1$material[indx2 & indx] <- dat1$material[which(indx2 & indx)-1]
  dat1
 #  material  ID1  ID2
 #1    steel 0085 0081
 #2 plastics 0082 0087
 #3 plastics 0087 0088

数据

dat1 <- structure(list(material = c("steel", "plastics", NA), ID1 = c("0085", 
"0082", "0087"), ID2 = c("0081", "0087", "0088")), .Names = c("material", 
"ID1", "ID2"), class = "data.frame", row.names = c("1", "2", 
 "3"))

答案 1 :(得分:0)

试试这个:

for (i in 1:nrow(dataset)) {
    a <- dataset[i,]
    if (is.na(a$material)) {
        dataset[i,1] <- dataset$material[grep(a$ID1, dataset$ID2)[1]]
    }
}