可以从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)
答案 0 :(得分:9)
如果使用grouped_df
函数将数据分组(group_by()
),则会发生此问题。我刚碰到它。我的解决方案是ungroup()
数据帧,然后使用as.factor()
转换为因数。