这个问题类似于基于索引R的组合数据框架
我试图复制一列从df2(大df)到df1(小df),但基于索引。在python中应该是:
df1= df1[df.index.isin(df2.index)]
df1['columnx'] = df2['columny']
df1$name <- 0
df1$name[df1$df1['columnx'] == df2$['columny'] <- df2$name
我试图替换"名称"。在df1中使用df2 "name"列对应于公共索引(columnx Column作为索引col),但失败。我还试图找到一个通用索引
df2.index <- intersect(df1$columnx, df2$columny)
所以df2将有一个小的索引在df1,然后复制列从df2到df1,但它不起作用
编辑:
DF1
columnx | col.1 | col.2 |...
a | 12345 | etc. |...
b | | |
DF2
columny | col.1 | col.2 | name|
a | 123 | 1234 |abc |
b | | |def |
c | | |ghi |
d | | | |
..
结果需要:
DF组合:
columnx | col.1 | col.2 |name
a | 12345 | etc. |abc |
b | | |def |
您可以简单地使用match()
:
df1$name <- df2$name[match(df1$columnx, df2$columny)]
或者通过公共列合并两个数据:
dplyr::left_join(df1, df2[c("columny", "name")], by = c("columnx" = "columny"))