我试图从myDF2中替换myDF1中的值,其中行匹配列“studyno”但我迄今发现的解决方案don似乎没有给我想要的输出。R - 使用来自另一个数据帧的值,根据行匹配填充一个数据帧
下面是data.frames:
myDF1 <- structure(list(studyno = c("J1000/9", "J1000/9", "J1000/9", "J1000/9",
"J1000/9", "J1000/9"), date = structure(c(17123, 17127, 17135,
17144, 17148, 17155), class = "Date"), pf_mcl = c(NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
), year = c(2016, 2016, 2016, 2016, 2016, 2016)), .Names = c("studyno",
"date", "pf_mcl", "year"), row.names = c(NA, 6L), class = "data.frame")
myDF2 <- structure(list(studyno = c("J740/4", "J1000/9", "J895/7", "J931/6",
"J609/1", "J941/3"), pf_mcl = c(0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("studyno",
"pf_mcl"), row.names = c(NA, 6L), class = "data.frame")
一个解决办法我试过似乎工作如下所示,然而,我发现,无论值在myDF1之前已被删除。
myDF1$pf_mcl <- myDF2$pf_mcl[match(myDF1$studyno, myDF2$studyno)]
你能澄清你想要的输出,和你提出的解决方案有什么不同?在我看来,如果你想“从myDF2中替换myDF1中的值”,那么“* should *”之前myDF1中的“值”已被删除“,所以我认为我错过了一些东西。 – gung
你应该看看'merge'函数。 –
Hi @ gung,抱歉不清楚。 myDF2是myDF1的一个子集,但是myDF2比myDF1更好。出于这个原因,我发现myDF1中有一些行缺少值,因此我在myDF2中寻找匹配并更新myDF1中的值。但是,我不想放弃不匹配行中的值,这是我发布的脚本所做的。让我知道是否需要添加更多细节。 –