【发布时间】:2017-08-30 14:48:30
【问题描述】:
我想将 R 中的字符向量转换为因子(让我们以 DataCamp Introduction to R 课程中的示例为例),并且想标记一些因子级别。如何避免任何未提及/未声明的级别自动置于 NA?
speed_vector <- c("fast", "slow", "slow", "fast", "insane")
factor_speed_vector <- factor(speed_vector, ordered = TRUE, levels = c("slow", "insane"), labels = c("Speed < 30 mph", "Speed > 100 mph"))
结果
> summary(factor_speed_vector)
Speed < 30 mph Speed > 100 mph NA's
2 1 2
> factor_speed_vector
[1] <NA> Speed < 30 mph Speed < 30 mph <NA> Speed > 100 mph
Levels: Speed < 30 mph < Speed > 100 mph
我如何确保任何未定义的因子水平(如本例中的“快速”)与原始值保持一致,而不是设置为 NA?
编辑: 我之前在这里的评论是由于因子函数中的级别和标签选项的混淆。任何不知道区别的人都可以在这里阅读:Confusion between factor levels and factor labels
【问题讨论】:
-
你想对一个不是你的因素水平的值做什么?将其添加为新因素?
-
@user 我只是想确保在将向量转换为具有大量因子级别的较大数据集中的因子时,数据不会自动设置为 NA,只是因为我错过了声明一个级别.所以mt1022,标签是什么实际上无关紧要,我只是添加了它们,所以第一条评论不是我为什么不使用
factor()而不定义级别的原因。定义级别的原因是我想给它们贴标签。 -
也许您想从
factor_speed_vector <- factor(c("fast", "slow", "slow", "fast", "insane"), ordered = TRUE)开始以更好地复制您的情况? -
那么您是否需要一种方法将向量转换为因子,并自动将级别设置为向量中的所有唯一值?只需使用
as.factor() -
@user;这不起作用,因为您无法在 as.factor 中对级别进行排序和标记
标签: r