【问题标题】:How to rename the variables in a list of dataframes which contain a common phrase in R如何重命名包含R中常用短语的数据框列表中的变量
【发布时间】:2017-03-27 03:46:54
【问题描述】:

我在 R 中有一个 data.frames 列表。我想使用 join_all 将它们连接在一起,但它们共有的变量名称并不完全相同。

这是一个示例数据集

compA <- rep(1:35)
compB <- rep(1:35)
compC <- rep(1:35)
valuesa <- rnorm(35)
valuesb <- rnorm(35)
valuesc <- rnorm(35)
A <- data.frame(compA, valuesa)
B <- data.frame(compB, valuesb)
C <- data.frame(compC, valuesc)
list <- list(A, B, C)

这里,CompA、CompB 和 CompC 都是相同的,但“值”变量都是不同的。我想将列表中包含“comp”的所有变量重命名为具有相同名称,这样我就可以通过“comp”将列表中的所有数据框合并为一个数据框。

JointData <- join_all(list, by="Comp", type='left')

有人知道怎么做吗?

这个问题How to find common variables in a list of datasets & reshape them in R? 似乎是最接近的,但据我所知,他实际上并没有重命名他的变量。

【问题讨论】:

  • 所以JointData 会有一列Comp 和另外3 列valuesavaluesbvaluesc
  • 是的,如果可以的话?

标签: r list join merge


【解决方案1】:

我们可以使用lapplygrep如下:

lapply(list, function(x){setnames(x, old = grep("comp", names(x)), new = "Comp")})

使用您的代码将为您提供前 10 行:

> JointData <- join_all(list, by="Comp", type='left')
> JointData
   Comp      valuesa      valuesb     valuesc
1     1  1.459809314  1.074395596  0.05459735
2     2 -1.442052931  0.259653583 -0.18003632
3     3  0.856110943  0.020583632 -2.23210988
4     4 -0.458347842 -0.472916330  0.03734474
5     5  0.722777326  0.372389619 -1.18025645
6     6 -1.079007191  1.812031538  0.81196831
7     7 -0.478990080 -0.298745059 -0.22902673
8     8 -0.015821375  0.414506210 -0.20809839
9     9 -0.844872308 -0.208205289  0.53310519
10   10  0.330617594 -0.177282871 -0.67203133

【讨论】:

  • 很高兴为您提供帮助。如果我的建议适合回答您的问题,请单击勾选标记以接受它作为所选答案。
  • 完成。谢谢大家:-)
猜你喜欢
  • 2018-11-09
  • 2016-03-04
  • 2015-12-29
  • 2012-05-26
  • 2012-04-28
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2018-12-21
相关资源
最近更新 更多