r语言 - 根据索引将列从一个数据帧复制到另一个数据帧



这个问题类似于基于索引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"))

最新更新