[英]How to create new column based on two different length dataframe matching IDS in R
[英]How to (efficiently) retrieve the value of a column in a different row based on matching IDs?
我正在嘗試做我在下面的示例中所做的事情,但是在大規模上,因此理想情況下,該解決方案是盡可能高效的。 提前致謝
ID1 <- c("a", "d", "c", "d")
ID2 <- c("d", "e", "f", "g")
df <- data.frame(ID1, ID2)
df
ID1 ID2
1 a d
2 d e
3 c f
4 d g
Function 在“ID1”列中找到“d”,並在第一行返回“e”(其中 ID1 = “a”)
如果再次運行,或者指定我們想要第二個匹配,function 在“ID1”列中找到“d”,並在第一行返回“g”(其中 ID1 = “a”)
ID3 <- c("e", "", "", "")
ID4 <- c("g", "", "", "")
desired <- data.frame(ID1, ID2, ID3, ID4)
desired
ID1 ID2 ID3 ID4
1 a d e g
2 d e
3 c f
4 a g
我們可以使用
vals <- with(df, ID2[ID1 %in% ID2])
df[1, paste0("ID", seq_along(vals)+2)] <- vals
-輸出
> df
ID1 ID2 ID3 ID4
1 a d e g
2 d e <NA> <NA>
3 c f <NA> <NA>
4 d g <NA> <NA>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.