我試圖從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中的值。但是,我不想放棄不匹配行中的值,這是我發佈的腳本所做的。讓我知道是否需要添加更多細節。 –