我有两个数据框:
NULL
和
df:
id id.1 weight
RoLu1976 Gr1969 50
MaRg1988 FuDa1989 10
FiKy1977 RoBa1983 12
MaTe1980 SeNd1998 23
Gr69 MaGe1977 72
我需要在df1:
id id.1
Gr1969 RoLu1976
FiKy1977 RoBa1983
中制作一个weight
列,方法是将df1
和df1$id
与df1$id.1
和df$id
相匹配。
df$id.1
有时,列中的观察值交换,例如,df1:
id id.1 weight
Gr1969 RoLu1976 50
FiKy1977 RoBa1983 12
第一行和df's
第一行:
df1's
和
df:
id id.1 weight
Rolu1976 Gr1969 50
这意味着列顺序对匹配并不重要。
[编辑]
我尝试使用df1:
id id.1
Gr1969 RoLu1976
包中的inner_join
函数和dplyr
函数来执行此操作,但是,必须进行列的所有组合。
有没有指定所有组合的方法来匹配它们?
或者用 python pandas模块以最快的方式做到这一点?
答案 0 :(得分:3)
不确定,列中的交换是有意还是错误。这是解决方案
解决方案
rbind(merge(df1, df2, by.x = c('id.1','id'), by.y = c('id','id.1')),
merge(df1, df2, by.x = c('id.1','id'), by.y = c('id.1','id')))
输出
id.1 id weight
1 Gr1969 RoLu1976 50
2 RoBa1983 FiKy1977 12
数据
df1 <- read.table(text='id id.1 weight
RoLu1976 Gr1969 50
MaRg1988 FuDa1989 10
FiKy1977 RoBa1983 12
MaTe1980 SeNd1998 23
Gr69 MaGe1977 72', header=TRUE)
df2 <- read.table(text='id id.1
Gr1969 RoLu1976
FiKy1977 RoBa1983', header=TRUE)