【问题标题】:Warning: Mutate_impl(.data, dots): Unequal factor levels: coercing to character警告:Mutate_impl(.data, dots):不等因子级别:强制转换为字符
【发布时间】:2017-08-30 12:51:46
【问题描述】:

泰坦尼克号数据集可以从 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)

【问题讨论】:

  • 我在 R 中找不到 titanic 数据框。如果可能,请说明您是如何获得这些数据的。
  • 抱歉,你可以使用'titanic'包或者从kaggle下载:kaggle.com/c/titanic/data
  • titanic R 包中有四个数据集。他们都没有叫titanic。您能否通过提供有关数据的更多信息来使您的示例代码可重现?
  • 我运行了你的代码,使用titanic_train 作为titanic,但我无法重现你的警告信息。代码似乎运行良好。
  • @ycw 我重新启动了我的计算机和 R,你是对的,我不再收到错误消息!下次我会在发布之前先尝试一下。奇怪的。知道为什么这么简单的修复可以解决问题或为什么会出现这样的错误吗?

标签: r warnings dplyr


【解决方案1】:

如果使用 group_by() 函数对数据进行分组 (grouped_df),则可能会出现此问题。我刚碰到它。我的解决方案是 ungroup() 数据框,然后使用 as.factor() 转换为因子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 2017-11-10
    相关资源
    最近更新 更多