我想在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/