通常,我需要将连续变量(仅具有有限种类的值)转换为因子。
我通常使用下面的代码,但是最近我收到了错误消息。
您能简化此代码吗?
DT2 <- DT1 %>%
mutate_if(function(x) length(unique(x))<=3 & length(unique(x))>1,funs(as.factor))
怎么样
DT2 <- DT1 %>% mutate_at(c("col1", "col2"), as.factor)
其中col是要作为要素重铸的列的名称
如果要使该行“更简单”,则可以在外部指定谓词函数,因此更易于阅读。像这样的东西...
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))