r 编程 --- 合并函数返回带有 .x 和 .y 的列名

标签 r

合并两个表时,我无法控制合并结果中的列名。为了解释我的情况,让我使用 mtcars 数据:

#load mtcars data.frame
data(mtcars)

添加一个名为“car”的新列,我将用作合并键
mtcars$car <- row.names(mtcars)

现在创建两个互斥表。
small <- mtcars[mtcars$cyl == 4,]
med.large <- mtcars[mtcars$cyl >4,]

现在,当我进行左合并时,我应该得到“小”表,因为这两个表是互斥的:
merge(x = small, y = med.large, by = 'car', all.x=T)

这将返回“小”表,但每列出现两次,带有 .x 和 .y 扩展名,.y 列全部为 NA(因为这两个表没有公共(public)记录),如下所示
 car mpg.x cyl.x disp.x hp.x drat.x  wt.x qsec.x vs.x am.x gear.x carb.x mpg.y cyl.y

 1      Datsun 710  22.8     4  108.0   93   3.85 2.320  18.61    1    1       4      1    NA    NA

在这种情况下,如何使用主合并表中的列值仅获取一次列名 LEFT 表(“小”)。我不知道如何避免 .x 和 .y。延期?

最佳答案

如果每个列名都重复,您可以使用

merge(x = small, y = med.large, by = names(small), all.x=T)

如果列名不同,您可以在两者中构建名称向量
intersect(names(small), names(med.large))

并将其传递给 by .否则,如果两个 data.frame 共享一个未传递给 by 的列,你最终会得到 .x.y后缀。

关于r 编程 --- 合并函数返回带有 .x 和 .y 的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834257/

相关文章:

r - 如何通过ggplot2绘制复杂的函数?

R:展开 data.frame 值

r - 从数据帧子集中对因子变量进行有效采样

r - 如何减少(子集)列表列表?

r - RStudio 中的 "large vectors"是什么?

带有 Rcpp 和 CMake 的 R 包(Windows)

r - 将 gvis 对象(存储为 HTML 的图像)嵌入到 mailR - R 中

r - 寻找最频繁的组合

r - 更改条形图中特定条的颜色

r - 在 R 中绘制 GLM 模型