在子数据框中删除未使用的因子水平

梅德里斯科尔

我有一个包含的数据框factor当我使用subset或其他索引功能创建此数据框的子集时,将创建一个新的数据框。但是,factor即使/如果新数据帧中不存在变量,该变量将保留其所有原始级别。

这在进行多面图绘制或使用依赖于因子水平的函数时会引起问题。

从新数据框中的一个因素中删除级别的最简洁方法是什么?

这是一个例子:

df <- data.frame(letters=letters[1:5],
                    numbers=seq(1:5))

levels(df$letters)
## [1] "a" "b" "c" "d" "e"

subdf <- subset(df, numbers <= 3)
##   letters numbers
## 1       a       1
## 2       b       2
## 3       c       3    

# all levels are still there!
levels(subdf$letters)
## [1] "a" "b" "c" "d" "e"
Hatmatrix

您要做的就是在子集设置之后再次将factor()应用于变量:

> subdf$letters
[1] a b c
Levels: a b c d e
subdf$letters <- factor(subdf$letters)
> subdf$letters
[1] a b c
Levels: a b c

编辑

从因子页面示例中:

factor(ff)      # drops the levels that do not occur

要从数据框中的所有因子列中删除级别,可以使用:

subdf <- subset(df, numbers <= 3)
subdf[] <- lapply(subdf, function(x) if(is.factor(x)) factor(x) else x)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

防止 ggplotly 从图例中删除未使用的因子水平

删除data.table中未使用的因子水平

使用数据框列更改因子水平

使用变量在数据框中同时使用因子名称和水平顺序来更改R中的因子水平

删除 ggplot 中未使用的因子组合

从数据框中获取因子的水平为整数

添加未使用的因子水平

从因子变量中删除特定因子水平

rbind到数据框的因子水平无效

当提供特定值时从数据框中删除因子

如何从过滤的数据框“内存”中删除因子级别

删除数据框中包含特定值的因子列

R 删除按因子分组的数据框中的异常值

修改数据框中的变量,仅适用于某些水平的因子(可能使用dplyr)

R:从数据框中相同因子水平的先前观察中提取数据

ggplot:删除图例中的NA因子水平

R:使数据框中所有因子列中重复的水平唯一

如何使数据框中的因子水平在所有列中保持一致?

如何根据不同数据框中相同变量的水平创建因子变量

根据 r 中的因子水平索引对数据框进行排序

通过匹配给定因子水平的变量/列选择数据框中的变量/列

尝试为数据框中的特定变量设置因子水平--Lapply 返回 NA

如何使用已知日期格式的因子水平来通知其余数据框?

R-随机森林-删除训练数据中不存在的新因子水平

如何使用R根据匹配查找数据帧替换数据帧的多个列中的因子水平

如何从R中的数据框中删除包含唯一因子级别的行?

使用dplyr过滤R中的因子水平

使用R中因子自身的子集重命名因子水平

如何过滤数据框中的行以仅获取3个最流行的数据并删除其他未使用的数据?