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