如何使用dplyr的recode_因子保持其他值不变
在下面的示例中,重新编码某些值会使所有其他值都为NA。如何保持其他值不变 可供图书馆使用 图书馆弹琴 测试一个tible:3 x 1 >测试向量 > > 1 1 > 2 2 > 3 3 测试%>% mutatetest\u vec=recode\u factortest\u vec,`3`=4 >一个tibble:3x1 >测试向量 > > 1 > 2 > 3 4如何使用dplyr的recode_因子保持其他值不变,r,dplyr,R,Dplyr,在下面的示例中,重新编码某些值会使所有其他值都为NA。如何保持其他值不变 可供图书馆使用 图书馆弹琴 测试一个tible:3 x 1 >测试向量 > > 1 1 > 2 2 > 3 3 测试%>% mutatetest\u vec=recode\u factortest\u vec,`3`=4 >一个tibble:3x1 >测试向量 > > 1 > 2 > 3 4 需要使替换项的类型与原始值相同 test %>%
需要使替换项的类型与原始值相同
test %>%
mutate(test_vec = recode_factor(test_vec, "3" = "4"))
# A tibble: 3 x 1
test_vec
<fct>
1 1
2 2
3 4
为了不丢失NA值,还必须在函数中列出其他值
test %>%
mutate(test_vec = recode_factor(test_vec, `1` = 1, `2` = 2, `3` = 4))
结果
# A tibble: 3 x 1
test_vec
<fct>
1 1
2 2
3 4
# A tibble: 3 x 1
test_vec
<fct>
1 1
2 2
3 4
使用fct_重新编码
-输出
# A tibble: 3 x 1
# test_vec
# <fct>
#1 1
#2 2
#3 4
另一种方法是使用case_when,但为此,必须从数值开始。 我给你们一个从数值开始的例子,我把它们转换成因子
test <- tibble(
test_vec = (c(1, 2, 3)))
test %>%
mutate(test_vec = case_when( test_vec != 3 ~ test_vec,
test_vec == 3 ~ 4)) %>%
mutate(across(test_vec,factor))
结果
# A tibble: 3 x 1
test_vec
<fct>
1 1
2 2
3 4
# A tibble: 3 x 1
test_vec
<fct>
1 1
2 2
3 4
是的,但当有更多的价值观时,这很快就会变得令人讨厌