假設我有兩個數據幀創建從另一個數據幀條件上的另一列一個數據幀的不同列的新列
df1 <- data.frame(A = 1:6, B = 7:12, C = rep(1:2, 3))
df2 <- data.frame(C = 1:2, D = c("A", "B"))
我想創建DF1,其值的新E列是基於列C的值,然後可以在df2中連接到列D.例如,df1的第一行中的C值是「1」。並且df2中的列C的值1對應於列D的「A」,因此在df2中創建的值E應該來自列「A」,即1.
如Select values from different columns based on a variable containing column names所建議的,我可以通過兩步驟:
setDT(df1)
setDT(df2)
df3 <- df1[df2, on = "C"] # step 1 combines the two data.tables
df3[, E := .SD[[.BY[[1]]]], by = D] # step 2
我的問題是:我們可以在一個步驟中做到這一點?此外,由於我的數據相對較大,這個原始解決方案的第一步需要很長時間。我們能以更快的速度做到這一點嗎? 有什麼建議嗎?
如果它被標記爲複製,則意味着答案是另一個問題;) –
遺憾的混亂,更新的問題是現在從原來的一個 –
多少行的實際數據DF2已經不同? – zx8754