令人惊奇的是,我尝试了三种不同类型的代码通过两个变量合并我的两个数据。我还检查了数据和变量的类型,并确保它们都相同。在这里,我使用的代码无法用于合并。
第一个代码:
merge(data1,data2,
by.x = c(data1$Country, data1$Year),
by.y = c(data2$Country, data2$Year))
第二个代码:
merge(data1,data2,
by = c("Country", "Year"))
第三个代码:
merge(data1, data2, by.x="Country", by.y = "Year")
我从所有这些代码中得到了此错误:
fix.by(by.x,x)中的错误:“ by”必须指定唯一有效的列
任何帮助将不胜感激。
答案 0 :(得分:1)
首先,您应该查看How to make a great R reproducible example,尤其是有关无法共享原始数据时的处理方法的建议。
由于我们不知道您的数据的实际外观,因此很难提供具体的帮助。也就是说,为了寻求解决方案,我在下面模拟了一些模拟数据,并展示了如何基于两列中的条目合并两个data.frame
:
set.seed(2018)
data1 <- data.frame(
Country = sample(letters, 10),
Year = sample(1:4, 10, replace = T),
Value = sample(10))
data2 <- data.frame(
Country = sample(letters, 10),
Year = sample(1:4, 10, replace = T),
Value = sample(10))
merge(data1, data2, by = c("Country", "Year"))
# Country Year Value.x Value.y
#1 l 3 6 6
或者如果您要保留每个data.frame
中不匹配的行
merge(data1, data2, by = c("Country", "Year"), all = TRUE)
# Country Year Value.x Value.y
#1 b 4 2 NA
#2 c 3 9 NA
#3 c 4 NA 3
#4 e 3 1 NA
#5 g 3 10 NA
#6 i 2 3 NA
#7 j 4 7 NA
#8 k 1 NA 1
#9 k 4 5 NA
#10 l 3 6 6
#11 m 2 8 NA
#12 r 3 4 NA
#13 a 3 NA 9
#14 d 4 NA 5
#15 q 1 NA 10
#16 t 1 NA 7
#17 v 4 NA 2
#18 w 3 NA 4
#19 x 4 NA 8