警告:Mutate_impl(.data,dots):不等的因子级别:强制转换为字符

时间:2017-08-30 12:51:46

标签: r warnings mutate

可以从kaggle:kaggle.com/c/titanic/data下载泰坦尼克号数据集。请使用train.csv或安装软件包'titanic'并使用数据集titanic_train。

这有效

library(dplyr)
library(stringr)

titanic <- titanic %>%
    mutate(Cabin_Letter = ifelse(!is.na(Cabin), str_extract(Cabin, "[A-Z]+"), 'Unknown'))

这完全不起作用

titanic <- titanic %>%
    mutate(Cabin_Letter = factor(ifelse(!is.na(Cabin), str_extract(Cabin, "[A-Z]+"), 'Unknown')))

警告:

警告讯息: 1:在mutate_impl(.data,dots)中:   不平等因素水平:胁迫性格 2:在mutate_impl(.data,dots)中:   绑定字符和因子向量,强制转换为字符向量 3:在mutate_impl(.data,dots)中:   绑定字符和因子向量,强制转换为字符向量 4:在mutate_impl(.data,dots)中:   绑定字符和因子向量,强制转换为字符向量 5:在mutate_impl(.data,dots)中:   绑定字符和因子向量,强制转换为字符向量 6:在mutate_impl(.data,dots)中:   绑定字符和因子向量,强制转换为字符向量 7:在mutate_impl(.data,dots)中:   绑定字符和因子向量,强制转换为字符向量

我该如何解决这个问题?我不想采取额外的一行:

titanic$Cabin_letter <- factor(titanic$Cabin_letter)

1 个答案:

答案 0 :(得分:9)

如果使用grouped_df函数将数据分组(group_by()),则会发生此问题。我刚碰到它。我的解决方案是ungroup()数据帧,然后使用as.factor()转换为因数。