0
如果是基本問題或重複問題,我表示歉意,但我是初學者R用戶。按兩列匹配兩個數據幀並從第三列中提取值
我試圖按性別和年齡將Dataframe A中的每一行都匹配到Dataframe B中的兩個對應列。我知道肯定會有匹配,所以我想從兩個不同的匹配行中提取值Dataframe B中的列並將它們存儲在Dataframe C中。
Dataframe A Dataframe B
ID Sex Age Weight Row Sex Age X1 X2
1 1 24 36 1 1 24 18.2 12.3
2 1 34 56 2 2 87 15.4 16.5
3 2 87 12 3 1 64 16.3 11.2
4 2 21 08 4 2 21 15.6 14.7
5 1 64 33 5 1 34 17.7 18.9
...
Dataframe C
ID Age Sex Weight Y1 Y2
1 1 24 36 18.2 12.3
2 1 34 56 17.7 18.9
3 2 87 12 15.4 16.5
4 2 21 08 15.6 14.7
5 1 64 33 16.3 11.2
我的數據框中有9000個ID。我看過類似的問題,像這樣的
Fill column values by matching values in each row in two dataframe
但我不認爲這我正確地應用此代碼。 for循環在這裏會有用嗎?
for(i in 1:nrow(ID){
dfC[i,Y1] <-df2[match(paste(dfA$Sex,dfa$Age),paste(dfB$Sex,dfB$Age)),"X1"]
dfC[i,Y2] <-df2[match(paste(dfA$Sex,dfa$Age),paste(dfB$Sex,dfB$Age)),"X2"]
}
我知道合併功能也被建議,但這兩個變量在我的數據集中並沒有實際命名相同的方式。
謝謝!
爲什麼不重命名變量,這樣的按鍵匹配的名字嗎?如果確實存在問題,請使用合併中的by.x和by.y鍵。 – bramtayl
當我嘗試這個,我失去了大約700觀察。我不確定DFA中每個年齡和性別差異的原因都應該在DFB中具有相應的年齡和性別值。如果DFB中的變量是「因素」,而DFA中的變量是「num」,那麼這很重要嗎? – user2324
將所有= TRUE添加到您的合併調用中,您可以親自看到問題所在。我不認爲這應該是非關鍵變量的類型。 – bramtayl