我分别调用了 3 个数据框:barometre2013、barometre2016、barometre2018。
我已经像这样合并 barometre2018 和 barometre2016 :
baro1618 <- merge(barometre2016, barometre2018, all = TRUE)
一切都很好,我有两个数据框的所有行,并且相同的列名与两个数据框的所有行合并为一个。正是我想要的。
合并后的表如下所示:
names(baro1618)
[1] "q0qc" "regio" "sexe" "age" "langu" "q1a_1" "q1a_2" "q1a_3" "q1a_4" "q1a_5"
[11] "q1a_6" "q1a_7" "q1a_8" "q1a_9" "q1a_10" "q1b_1" "q1b_2" "q1b_3" "q1b_4" "q1b_5"
[21] "q1b_6" "q1b_7" "q1b_8" "q1b_9" "q1b_10"
现在,我的问题从这里开始。
我想将 baro1618 与 barometre2013 合并,但在此之前我必须将所有列名称小写,因为当我尝试合并而不这样做时,barometre2013 的大写列与小写 baro1618 具有相同名称的列未合并.
df barometre2013 看起来像这样:
names(barometre2013)
[229] "POND" "Q1A_1" "Q1A_2" "Q1A_3" "Q1A_4" "Q1A_5" "Q1A_6" "Q1A_7" "Q1A_8" "Q1A_9" "Q1A_10" "Q1B_1"
[241] "Q1B_2" "Q1B_3" "Q1B_4" "Q1B_5" "Q1B_6" "Q1B_7" "Q1B_8" "Q1B_9" "Q1B_10" "Q5A_1" "Q5A_2" "Q5A_3"
所以我尝试了这两种小写的解决方案(都有效):
barometre2013 <- setnames(barometre2013, tolower(names(barometre2013)))
colnames(barometre2013) <- tolower(colnames(barometre2013))
结果:
[229] "pond" "q1a_1" "q1a_2" "q1a_3" "q1a_4" "q1a_5" "q1a_6" "q1a_7" "q1a_8" "q1a_9" "q1a_10" "q1b_1"
[241] "q1b_2" "q1b_3" "q1b_4" "q1b_5" "q1b_6" "q1b_7" "q1b_8" "q1b_9" "q1b_10" "q5a_1" "q5a_2" "q5a_3"
但是,当我尝试像这样合并时:
baro1118 <- merge(baro1618, barometre2013, all = TRUE)
它给了我这个错误:
Error in fix.by(by.x, x) : 'by' must specify a uniquely valid column
我不明白为什么它在第一个示例中有效,而在第二个示例中无效。我无法指定任何列,因为我有太多匹配的名称列和很多不匹配的列。
应该可以不指定吧?
另外,我想保留所有匹配的列名和不匹配的列名。
很抱歉这么长的解释,但我真的需要答案,我已经阅读了很多关于 SO 的 Q/A 并没有找到我的答案。