簡體   English   中英

如何(有效地)根據匹配的 ID 檢索不同行中的列的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM