【发布时间】:2019-01-15 05:54:51
【问题描述】:
我遇到了一个出色的 SO 帖子/答案 here,它表明可以使用 dplyr::mutate_at 保留原始变量,而使用用户定义的后缀创建新变量。代码运行如下:
library(tidyverse)
dataframe <- data_frame(
helloo = c(1, 2, 3, 4, 5, 6),
ooooHH = c(1, 1, 1, 2, 2, 2),
ahaaa = c(200, 400, 120, 300, 100, 100)
)
dataframe %>%
mutate_at(
vars(contains("oo")),
.funs = funs(cat = ntile(., 2))
)
产生
# A tibble: 3 x 5
helloo ooooHH ahaaa helloo_cat ooooHH_cat
<dbl> <dbl> <dbl> <int> <int>
1 1 1 200 1 1
2 2 1 400 1 1
3 3 1 120 2 2
但是,如果vars只有一个变量,那么这个后缀方案就不能像上面那样工作:例如:
varlist <- c('ooooHH')
dataframe %>%
mutate_at(
vars(varlist),
.funs = funs(cat = ntile(., 2))
)
产生输出为
# A tibble: 3 x 4
helloo ooooHH ahaaa cat
<dbl> <dbl> <dbl> <int>
1 1 1 200 1
2 2 1 400 1
3 3 1 120 2
我明白道理---如果只有一个变量发生突变,则无需区分新变量。但是,为了保持一致性,我希望将 cat 列命名为 ooooHH_cat,因为我将多次执行此操作,并且进入 vars 的动态列名称的长度会有所不同。另外,我希望保留结果以供何时使用
varlist <- c('helloo', 'ooooHH')
有什么建议吗?
【问题讨论】: