我希望在数据框的大多数变量名称中添加前缀或后缀,通常是在它们被某种方式转换之后,在执行连接之前。 我没有一种方法可以在不打破我的管道的情况下实现这一点。
例如,有了这些数据:
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()
,但不想显式地指定每个变量名,因为通常我想重命名除单个变量之外的所有变量,并且可能拥有比这个示例中更大的数据框。
我想象一个最终的管道命令,它近似于以下虚构函数:
appendname(cols = 2:n, str = "_mean_2014", placement = "suffix")
据我所知,这个东西并不存在。
rename_at
函数也可以接受公式,因此你甚至可以省略匿名函数并执行重命名操作。rename_at(vars(-class), ~ paste0(., "_2014"))
- ruaridhwrename_at(vars(-class), paste0, "_2014")
即可。 - Martinrename_with(~paste0(.,"_2014"), -class)
中的rename_with
函数。 - louish