我有两个数据帧.例如
require('xlsx')
csvData <- read.csv("myData.csv")
xlsData <- read.xlsx("myData.xlsx")
Run Code Online (Sandbox Code Playgroud)
csvData看起来像这样:
Period CPI VIX
1 0.029 31.740
2 0.039 32.840
3 0.028 34.720
4 0.011 43.740
5 -0.003 35.310
6 0.013 26.090
7 0.032 28.420
8 0.022 45.080
Run Code Online (Sandbox Code Playgroud)
xlsData看起来像这样:
Period CPI DJIA
1 0.029 12176
2 0.039 10646
3 0.028 11407
4 0.011 9563
5 -0.003 10708
6 0.013 10776
7 0.032 9384
8 0.022 7774
Run Code Online (Sandbox Code Playgroud)
当我合并这些数据时,CPI数据被复制,并且后缀被放在标题上,这是有问题的(我的真实df中有更多的列).
mergedData <- merge(xlsData, csvData, by = "Period")
Run Code Online (Sandbox Code Playgroud)
mergedData:
Period CPI.x VIX CPI.y DJIA
1 0.029 31.740 0.029 12176
2 0.039 32.840 0.039 10646
3 0.028 34.720 0.028 11407
4 0.011 43.740 0.011 9563
5 -0.003 35.310 -0.003 10708
6 0.013 26.090 0.013 10776
7 0.032 28.420 0.032 9384
8 0.022 45.080 0.022 7774
Run Code Online (Sandbox Code Playgroud)
我想合并数据框而不重复具有相同名称的列.例如,我想要这种输出:
Period CPI VIX DJIA
1 0.029 31.740 12176
2 0.039 32.840 10646
3 0.028 34.720 11407
4 0.011 43.740 9563
5 -0.003 35.310 10708
6 0.013 26.090 10776
7 0.032 28.420 9384
8 0.022 45.080 7774
Run Code Online (Sandbox Code Playgroud)
我不想使用额外的'by'参数,或者从其中一个df中删除列,因为在两个df中都有太多的列重复.我只是在寻找一种动态的方法来在合并过程中删除那些重复的列.
谢谢!
by如果公共列的名称相同,则可以跳过参数.
来自?merge:
默认情况下,数据框在列上与它们都具有的名称合并,但列的单独规范可以由
by.x和给出by.y.
记住这一点,以下内容应该有效(就像您对样本数据所做的那样):
merge(csvData, xlsData)
# Period CPI VIX DJIA
# 1 1 0.029 31.74 12176
# 2 2 0.039 32.84 10646
# 3 3 0.028 34.72 11407
# 4 4 0.011 43.74 9563
# 5 5 -0.003 35.31 10708
# 6 6 0.013 26.09 10776
# 7 7 0.032 28.42 9384
# 8 8 0.022 45.08 7774
Run Code Online (Sandbox Code Playgroud)