我经常遇到这样的问题,需要重新编码符合相同结构的多列,并将它们保存到具有不同名称的列中。如果可以覆盖它们,这只需要在
这将是冗长的代码,我希望能够复制输出结果:
这是使用mutate_at的短代码,它会覆盖原始列:
有没有一种方法可以使用mutate_at保留短代码,但以原始列为基础进行更改,并将新列用不同的名称保存? 在这个示例中,这意味着在原始列名称末尾添加"_char",并根据嵌入式公式更改重新编码。
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",并根据嵌入式公式更改重新编码。