根据索引将列从一个 data.frame 复制到另一个
Copy column from one data.frame to another based on index
问题与
中的问题类似
我正在尝试将一列从 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
我试图用 df2 中对应于公共索引(columnx \ columny as index col)的“name”列的值替换 df1 中的“name”列,但失败了。我也试图找到一个共同的索引
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"))
问题与
我正在尝试将一列从 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
我试图用 df2 中对应于公共索引(columnx \ columny as index col)的“name”列的值替换 df1 中的“name”列,但失败了。我也试图找到一个共同的索引
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"))