r - 在管道R工作流程中为大多数data.frame变量名称添加前缀或后缀

标签 r dplyr magrittr

我想在data.frame中的大多数变量名中添加后缀或前缀,通常是在对它们进行某种方式的转换之后以及执行联接之前。我没有办法在不破坏我的管道的情况下做到这一点。

例如,使用以下数据:

library(dplyr)
set.seed(1)
dat14 <- data.frame(ID = 1:10, speed = runif(10), power = rpois(10, 1),
                    force = rexp(10), class = rep(c("a", "b"),5))


我想得到这个结果(注意变量名):

  class speed_mean_2014 power_mean_2014 force_mean_2014
1     a       0.5572500             0.8       0.5519802
2     b       0.2850798             0.6       1.0888116


我当前的方法是:

means14 <- dat14 %>%
  group_by(class) %>%
  select(-ID) %>%
  summarise_each(funs(mean(.)))  

names(means14)[2:length(names(means14))] <- paste0(names(means14)[2:length(names(means14))], "_mean_2014")


除了那条笨拙的最后一行会破坏我的管道,还有其他选择吗?我看过select()rename(),但不想显式指定每个变量名,因为我通常想重命名除单个变量之外的所有变量,并且可能比本示例中的data.frame宽得多。

我正在想象一个最终的管道命令,它近似于此组合功能:

appendname(cols = 2:n, str = "_mean_2014", placement = "suffix")


据我所知,这是不存在的。

最佳答案

您可以将函数传递给rename_at,这样

 means14 <- dat14 %>%
  group_by(class) %>%
  select(-ID) %>%
  summarise_all(funs(mean(.))) %>% 
  rename_at(vars(-class),function(x) paste0(x,"_2014"))

关于r - 在管道R工作流程中为大多数data.frame变量名称添加前缀或后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29948876/

相关文章:

r - 将个别选择的全局环境保存到 Rdata

r - 计算小于 x 的值并通过多个组找到最接近 x 的值

r - 如何将函数应用于 dplyr 链中的整个表

r - 结合管道和 magrittr 点 (.) 占位符

R:如何将字符串参数转换为变量?

r - 在函数中,是否可以将 `return( eval ( expr ) )`

R ggplot2-帮助复制火车图

r - 寻找连续 3 个最冷的月份

r - 如何将管道送入不等式?