我的问题是基于此处发布的上一个主题:Mutating multiple columns in a data frame
假设我有一个如下的反复:
id char_var_1 char_var_2 num_var_1 num_var_2 ... x_var_n
1 ... ... ... ... ...
2 ... ... ... ... ...
3 ... ... ... ... ...
其中 id
是键, char_var_x
是字符变量, num_var_x
是数字变量 . 我总共有346列,我想编写一个函数来扩展除 id
列之外的所有数值变量 . 我正在寻找一种使用管道和dplyr函数的 mutate 这些列的优雅方法 .
显然,以下适用于所有数字变量:
pre_process_data <- function(dt)
{
# scale numeric variables
dt %>% mutate_if(is.numeric, scale)
}
但我正在寻找一种方法从缩放中排除 id
列并保留原始值,同时缩放所有其他数值变量 . 有一种优雅的方式来做到这一点?
3 回答
试试下面,回答类似于select_if帖子:
这不是规范的方法,但有一点点破解,你可以使用
mutate_at
通过使用which
使用手动构造的列选择条件使列的整数索引变异来实现:如何“让你感兴趣的一个角色,然后改变它的方法?”