我如何轻松地将连续变量转换为因子?

问题描述 投票:0回答:2

通常,我需要将连续变量(仅具有有限种类的值)转换为因子。

我通常使用下面的代码,但是最近我收到了错误消息。

您能简化此代码吗?

DT2 <- DT1 %>%
  mutate_if(function(x) length(unique(x))<=3 & length(unique(x))>1,funs(as.factor))
dplyr factors
2个回答
0
投票

怎么样

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

其中col是要作为要素重铸的列的名称


0
投票

如果要使该行“更简单”,则可以在外部指定谓词函数,因此更易于阅读。像这样的东西...

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))
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.