【发布时间】:2018-07-02 15:04:47
【问题描述】:
我的问题基于之前发布的主题: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 函数变异这些列。
显然以下适用于所有数值变量:
pre_process_data <- function(dt)
{
# scale numeric variables
dt %>% mutate_if(is.numeric, scale)
}
但我正在寻找一种方法来从缩放中排除 id 列并保留原始值并同时缩放所有其他数值变量。有没有优雅的方法来做到这一点?
【问题讨论】:
-
dt %>% select(-id)不适合你吗? -
dt %>% mutate(id = as.character(id)) %>% mutate_if(is.numeric, scale) %>% mutate(id = as.numeric(id))? -
@JakeKaupp 请作为答案提交。