如何使用 forcats 重新编码多个值而不在 R 中重复
How to recode multiple values using forcats without repetition in R
我想使用 forcats
重新编码因子 x
使用像 yes = "bad", yes = "2", no = "3", no = "good" 这样的映射但是无需重复代码。
类似于 yes = levels(x)[1:2]
和 no = levels(x)[3:4]
.
<!-- language-all: lang-r -->
library(forcats)
x <- factor(c("bad", "2", "2", "good", "3", "3", "3", "good"),
levels = c("bad",2,3,"good"))
fct_recode(x, yes = "bad", yes = "2", no = "3", no = "good")
#> [1] yes yes yes no no no no no
#> Levels: yes no
# I don't want to repeat yes and no
levels(x)[1:2] # should be yes
#> [1] "bad" "2"
levels(x)[3:4] # should be no
#> [1] "3" "good"
由 reprex package (v0.3.0)
于 2020-10-03 创建
您可以使用 fct_collapse
:
library(forcats)
#By explicitly mentioning the levels to collapse
fct_collapse(x, yes = c('bad', '2'), no = c('3', 'good'))
#[1] yes yes yes no no no no no
#Levels: yes no
#By using levels
fct_collapse(x, yes = levels(x)[1:2], no = levels(x)[3:4])
#[1] yes yes yes no no no no no
#Levels: yes no
我想使用 forcats
重新编码因子 x
使用像 yes = "bad", yes = "2", no = "3", no = "good" 这样的映射但是无需重复代码。
类似于 yes = levels(x)[1:2]
和 no = levels(x)[3:4]
.
<!-- language-all: lang-r -->
library(forcats)
x <- factor(c("bad", "2", "2", "good", "3", "3", "3", "good"),
levels = c("bad",2,3,"good"))
fct_recode(x, yes = "bad", yes = "2", no = "3", no = "good")
#> [1] yes yes yes no no no no no
#> Levels: yes no
# I don't want to repeat yes and no
levels(x)[1:2] # should be yes
#> [1] "bad" "2"
levels(x)[3:4] # should be no
#> [1] "3" "good"
由 reprex package (v0.3.0)
于 2020-10-03 创建您可以使用 fct_collapse
:
library(forcats)
#By explicitly mentioning the levels to collapse
fct_collapse(x, yes = c('bad', '2'), no = c('3', 'good'))
#[1] yes yes yes no no no no no
#Levels: yes no
#By using levels
fct_collapse(x, yes = levels(x)[1:2], no = levels(x)[3:4])
#[1] yes yes yes no no no no no
#Levels: yes no