在 R 中合并 2 个 data.frames 时,我遇到了一个小问题。
我正在尝试合并 2 个具有相同列名的 data.frames,我希望 R 将相同名称的列合并为一列,而不是使其成为 2 个单独的列。
通常,当 R 在合并 data.frames 时遇到相同名称的列时会发生什么,它会创建 2 个带后缀“x”和“y”的单独变量。有没有办法在合并命令中指定这一点,以将不同数据集中的相似名称列视为一个列/变量?
我们可以用作示例的代码:
x = data.frame(id = c("a","c","d","g"),
maths = c(1,3,4,7), physics = c(1,3,4,7), chemistry = c(1,3,4,7),
english = c(1,3,4,7))
y = data.frame(id = c("b","c","d","e","f"),
maths = c(5,6,8,9,7), physics = c(5,6,8,9,7), chemistry = c(5,6,8,9,7),
english = c(5,6,8,9,7))
xy <- merge(x, y, by = "id")
现在有一种解决方法,我们可以在合并数据集中创建一个新变量,该变量从同名列中获取非 NA 值,但是如果您有大量列,这将非常低效。
SAS 用户会与此问题相关,因为专业 SAS 用户引起了我的注意,merge() 语句将 2 个相同名称的列合并为一列。
此外,作为下面提到的答案之一,如果我们使用:
xy <- merge(x, y, by = intersect(names(x), names(y)))
我们在 2 个 data.frames 之间没有交集。理想情况下,我们希望这里有 4 个观察值,2 个 data.frames 中的每个观察值 2 个 id = c("c","d")
非常感谢任何专业的 R 用户帮助我解决这个问题。
谢谢!