合并数据框时如何避免重复值?
How to avoid repeating values when merging data frames?
我有两个数据框:
df1:
Year Name1 Value1
1 1967 Fallow 47.2730
2 1967 Cultivated 52.5090
3 1967 Grassland 57.5399
4 1967 Shrubland 61.3711
5 1967 Woodland 62.1911
6 1960 Fallow-w 42.2146
and df2:
Year Name2 Value2
1 1967 Fallow 47.2718
2 1967 Cultivated 52.4988
3 1967 Grassland 56.8066
4 1967 Shrubland 59.3636
5 1967 Woodland 56.3803
6 1967 Fallow-w 42.1898
我想合并两个dfs,除了Values,它们是一样的。我这样做了:
df_all = merge(df1, df2, by = 'Year')
但它只保留复制一帧的行值并像这样结束:
Year Name1 Value1 Name2 Value2
1 1967 Fallow 47.273 Fallow 47.2718
2 1967 Fallow 47.273 Cultivated 52.4988
3 1967 Fallow 47.273 Grassland 56.8066
4 1967 Fallow 47.273 Shrubland 59.3636
5 1967 Fallow 47.273 Woodland 56.3803
6 1967 Fallow 47.273 Fallow-w 42.1898
我做错了什么?
如果我没有正确理解你的问题,我认为你需要加入:
left_join(df1, df2, by = c('Year', 'Name1'= 'Name2'))
这将匹配 Year
和 Name
的值。您的合并实际上只是在 Year
而不是名称上进行连接,这就是为什么它在右侧复制这些列的原因。
如果两个 df 完全相同,除了您可以尝试的值:
df_all=merge(df1, df2, by=c("Year","Name"))
请注意,如果 Name1 和 Name2 具有相同的名称(上面的名称),则更容易。
我有两个数据框:
df1:
Year Name1 Value1
1 1967 Fallow 47.2730
2 1967 Cultivated 52.5090
3 1967 Grassland 57.5399
4 1967 Shrubland 61.3711
5 1967 Woodland 62.1911
6 1960 Fallow-w 42.2146
and df2:
Year Name2 Value2
1 1967 Fallow 47.2718
2 1967 Cultivated 52.4988
3 1967 Grassland 56.8066
4 1967 Shrubland 59.3636
5 1967 Woodland 56.3803
6 1967 Fallow-w 42.1898
我想合并两个dfs,除了Values,它们是一样的。我这样做了:
df_all = merge(df1, df2, by = 'Year')
但它只保留复制一帧的行值并像这样结束:
Year Name1 Value1 Name2 Value2
1 1967 Fallow 47.273 Fallow 47.2718
2 1967 Fallow 47.273 Cultivated 52.4988
3 1967 Fallow 47.273 Grassland 56.8066
4 1967 Fallow 47.273 Shrubland 59.3636
5 1967 Fallow 47.273 Woodland 56.3803
6 1967 Fallow 47.273 Fallow-w 42.1898
我做错了什么?
如果我没有正确理解你的问题,我认为你需要加入:
left_join(df1, df2, by = c('Year', 'Name1'= 'Name2'))
这将匹配 Year
和 Name
的值。您的合并实际上只是在 Year
而不是名称上进行连接,这就是为什么它在右侧复制这些列的原因。
如果两个 df 完全相同,除了您可以尝试的值:
df_all=merge(df1, df2, by=c("Year","Name"))
请注意,如果 Name1 和 Name2 具有相同的名称(上面的名称),则更容易。