我很笨,用"(“或"/”)编码了我的许多要素标签。一般来说,它对我是有效的,但现在我正处于这样一个不起作用的点(glht(mod, linfct = c("……")))。
一开始我以为“一定有类似janitor::clean_names(.)的东西”,但不幸的是我找不到这样的东西。我正在寻找的是一个自动函数,可以同时应用于所有因素,如:df%>% mutate(across(where(is.factor), ~f_clean(.x) ) )
我看到干净的pckg,但它需要单独输入的因素水平。我发现的另一个选项是从看门人pck那里更改函数,什么也不起作用。例子见下文。
有人知道如何改进这一点吗?
提前谢谢你,路易丝
例子:
> #Mess up iris
> iris %>% mutate(Species = fct_recode(Species, `set osa` = "setosa", `versi (color)` = "versicolor",`virgi//nica`="virginica" ))-> temp
>
> #OPTION 1
> p_load(clean)
> temp %>% mutate(across(where(is.factor), ~clean_factor(.x ) ))-> i_temp
> get_labels(i_temp$Species)
[1] "set osa" "versi (color)" "virgi//nica"
>
> #OPTION 2
> temp %>% mutate(across(where(is.factor), ~clean_vec(.x) ))-> i_temp
> get_labels(i_temp$Species)
[1] "set_osa" "set_osa_2" "set_osa_3" "set_osa_4" "set_osa_5" "set_osa_6" "set_osa_7"
[8] "set_osa_8" "set_osa_9" "set_osa_10" "set_osa_11" "set_osa_12" "set_osa_13" "set_osa_14"
[15] "set_osa_15" "set_osa_16" "set_osa_17" "set_osa_18" "set_osa_19" "set_osa_20" "set_osa_21"
[22] "set_osa_22" "set_osa_23" "set_osa_24" "set_osa_25" "set_osa_26" "set_osa_27" "set_osa_28"
[29] "set_osa_29" "set_osa_30" "set_osa_31" "set_osa_32" "set_osa_33" "set_osa_34" "set_osa_35"
[36] "set_osa_36" "set_osa_37" "set_osa_38" "set_osa_39" "set_osa_40" "set_osa_41" "set_osa_42"
[43] "set_osa_43" "set_osa_44" "set_osa_45" "set_osa_46" "set_osa_47" "set_osa_48" "set_osa_49"
[50] "set_osa_50" "versi_color" "versi_color_2" "versi_color_3" "versi_color_4" "versi_color_5" "versi_color_6"
[57] "versi_color_7" "versi_color_8" "versi_color_9" "versi_color_10" "versi_color_11" "versi_color_12" "versi_color_13"
[64] "versi_color_14" "versi_color_15" "versi_color_16" "versi_color_17" "versi_color_18" "versi_color_19" "versi_color_20"
[71] "versi_color_21" "versi_color_22" "versi_color_23" "versi_color_24" "versi_color_25" "versi_color_26" "versi_color_27"
[78] "versi_color_28" "versi_color_29" "versi_color_30" "versi_color_31" "versi_color_32" "versi_color_33" "versi_color_34"
[85] "versi_color_35" "versi_color_36" "versi_color_37" "versi_color_38" "versi_color_39" "versi_color_40" "versi_color_41"
[92] "versi_color_42" "versi_color_43" "versi_color_44" "versi_color_45" "versi_color_46" "versi_color_47" "versi_color_48"
[99] "versi_color_49" "versi_color_50" "virgi_nica" "virgi_nica_2" "virgi_nica_3" "virgi_nica_4" "virgi_nica_5"
[106] "virgi_nica_6" "virgi_nica_7" "virgi_nica_8" "virgi_nica_9" "virgi_nica_10" "virgi_nica_11" "virgi_nica_12"
[113] "virgi_nica_13" "virgi_nica_14" "virgi_nica_15" "virgi_nica_16" "virgi_nica_17" "virgi_nica_18" "virgi_nica_19"
[120] "virgi_nica_20" "virgi_nica_21" "virgi_nica_22" "virgi_nica_23" "virgi_nica_24" "virgi_nica_25" "virgi_nica_26"
[127] "virgi_nica_27" "virgi_nica_28" "virgi_nica_29" "virgi_nica_30" "virgi_nica_31" "virgi_nica_32" "virgi_nica_33"
[134] "virgi_nica_34" "virgi_nica_35" "virgi_nica_36" "virgi_nica_37" "virgi_nica_38" "virgi_nica_39" "virgi_nica_40"
[141] "virgi_nica_41" "virgi_nica_42" "virgi_nica_43" "virgi_nica_44" "virgi_nica_45" "virgi_nica_46" "virgi_nica_47"
[148] "virgi_nica_48" "virgi_nica_49" "virgi_nica_50"
>
>
> #SOLUCTION NOT VERY HANDY
> clean_vec(get_labels(temp$Species)) %>% dput
c("set_osa", "versi_color", "virgi_nica")
> temp %>% mutate(across(where(is.factor), ~clean_factor(.x,c("set_osa", "versi_color", "virgi_nica") ) ))-> i_temp
These factor levels were not found in the data: set_osa, versi_color, virgi_nica
> get_labels(i_temp$Species)
[1] "set_osa" "versi_color" "virgi_ni发布于 2022-03-05 18:13:01
clean_character可以使用remove参数
library(clean)
library(dplyr)
library(sjlabelled)
i_temp <- temp %>%
mutate(across(where(is.factor), ~
as.factor(clean_character(.x, remove = "[[:punct:] ]"))))-checking
> get_labels(i_temp$Species)
[1] "setosa" "versicolor" "virginica" https://stackoverflow.com/questions/71361054
复制相似问题