【发布时间】:2021-03-09 11:10:02
【问题描述】:
我经常遇到必须重新编码遵循相同结构的多个列并将它们保存到具有不同名称的列中的问题。如果我可以覆盖它们,这将只是dplyr 中的一行,但由于我还想保留原始列,我不知道一个好的解决方案。下图。
这将是我想要复制的输出的长代码:
library(dplyr)
library(ggplot2)
data("diamonds")
diamonds <- diamonds %>%
mutate(x_char = case_when(x <= 4.5 ~ "low",
x > 4.5 & x < 7 ~ "so-so",
x >= 7 ~ "large",
TRUE ~ as.character(NA)),
y_char = case_when(y <= 4.5 ~ "low",
y > 4.5 & y < 7 ~ "so-so",
y >= 7 ~ "large",
TRUE ~ as.character(NA)),
z_char = case_when(z <= 4.5 ~ "low",
z > 4.5 & z < 7 ~ "so-so",
z >= 7 ~ "large",
TRUE ~ as.character(NA)))
这将是覆盖原始列的 mutate_at 短代码:
library(dplyr)
library(ggplot2)
data("diamonds")
diamonds <- diamonds %>%
mutate_at(vars(x, y, z), ~ case_when(. <= 4.5 ~ "low",
. > 4.5 & . < 7 ~ "so-so",
. >= 7 ~ "large",
TRUE ~ as.character(NA)))
有没有办法用 mutate_at 保留短代码,但以保留原始列的方式更改它,并以不同的名称保存新列?在示例中,这意味着在原始列名的末尾添加_char,并根据嵌入的公式更改重新编码。
【问题讨论】: