【问题标题】:How do I convert continuous variables to factors easily?如何轻松将连续变量转换为因子?
【发布时间】:2020-05-12 11:18:12
【问题描述】:

我经常需要将一个连续变量(只有有限种类的值)转换为一个因子。

我通常使用下面的代码,但最近我有错误消息。

你能让这段代码更简单吗?

DT2 <- DT1 %>%
  mutate_if(function(x) length(unique(x))<=3 & length(unique(x))>1,funs(as.factor))

【问题讨论】:

    标签: r dplyr factors


    【解决方案1】:

    怎么样

    DT2 <- DT1 %>% mutate_at(c("col1", "col2"), as.factor)
    

    其中 col 是要重铸为因子的列的名称

    【讨论】:

    • 对不起,我想有选择地转换一些连续变量。
    • 能否指定mutate_at()中连续变量唯一值的个数?
    • 您不能在单个列中混合不同的类。它要么是一个因素,要么是一个数字、字符等。您可以添加一个新列来标记满足您条件的行。
    【解决方案2】:

    如果你想让那行“更简单”,可以在外部指定谓词函数,这样更容易阅读。像这样的...

    my_predicate <- function(x) {
      length(unique(x)) <= 3 & length(unique(x)) > 1
    }
    
    DT1 %>% 
      mutate_if(my_predicate, as.factor)
    

    我相信这将替换满足此逻辑的当前列。如果要从中创建新列,可以使用命名列表指定列的名称。

    DT1 %>% 
      mutate_if(my_predicate, list(new_col = as.factor))
    

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      相关资源
      最近更新 更多