代码之家  ›  专栏  ›  技术社区  ›  ViSa

如何使用cross将变量更改为基于其名称的因子?

  •  0
  • ViSa  · 技术社区  · 5 年前

    (我是新来的)

    members factors 根据条件,如果他们的名字在列表中可用 to_factors_list

    我试过用一些代码 mutate(across()) 但它会出错。

    准备数据:

    library(tidyverse)
    
    # tidytuesday himalayan data
    members <- read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-09-22/members.csv")
    
    # creating list of names
    to_factors_list <- members %>% 
      map_df(~(data.frame(n_distinct = n_distinct(.x))),
            .id = "var_name") %>%
      filter(n_distinct < 15) %>%
      select(var_name) %>% pull()
    
    to_factors_list
    
    ############### output ###############
    'season''sex''hired''success''solo''oxygen_used''died''death_cause''injured''injury_type'
    

    members %>%
      mutate(across(~.x %in% to_factors_list, factor))
    
    members %>%
      mutate_if( ~.x %in% to_factors_list, factor)
    

    1 回复  |  直到 5 年前
        1
  •  0
  •   ekoam    5 年前

    正确的语法是:

    members %>% mutate(across(to_factors_list, factor))
    

    或者如果你喜欢旧版本的话 dplyr 语法:

    members %>% mutate_at(vars(to_factors_list), factor)