得到了一个巨大的数据帧,我希望将char列转换为因子:
如果我按列方式逐列获得工作:
df$column1 <- as.factor(df$column1)
class(df$column1)
[1] "factor"
如果我尝试自动化过程,而不是逐列,那么这样做不会:
library(magrittr)
library(dplyr)
df <- df %>% mutate_if(is.character, as.factor)
There were 450 or more warnings (use warnings() to see the first 50)
> warnings()
Warning messages:
1: In mutate_impl(.data, dots) : Unequal factor levels: coercing to character
2: In mutate_impl(.data, dots) :
binding character and factor vector, coercing into character vector
3: In mutate_impl(.data, dots) :
binding character and factor vector, coercing into character vector
4: In mutate_impl(.data, dots) :
我知道还有其他方法可以实现它,但问题是我需要使用dplyr :: mutate_if来完成它,因为所有的争吵都在管道内
[EDITED]
> str(df)
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 583860 obs. of 450 variables:
$ column1 : chr "NJEWE000147" "ERTTYF000147" "WTFD000318" "WEERRESD001112" ...
答案 0 :(得分:2)
类似的情况发生在我身上。不是原因的线索,而是解决了转换为数据框的问题
df <- data.frame(df)
试着告诉我。
答案 1 :(得分:0)
我今天遇到了同样的问题,我想我已经找到了原因。您的数据帧已分组,这就是为什么因子转换关闭的原因-它正在逐组转换向量。转换为常规的旧数据帧可以解决此问题,因为它除去了分组。所有表示他们无法复制问题的评论均未使用分组的数据框。
因此,如果您想在管道中解决问题,只需使用ungroup()
。