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

克里斯·鲁勒曼

我在某些因子级别上对数据帧进行了分组,结果发现因子级别虽然评估为0值,但在某种程度上仍保留在过滤后的数据帧中,就好像它们保留在内存中一样。以下是一些说明性数据:

set.seed(121)
df1 <- data.frame(
  Fac1 = rep(LETTERS[1:5], 2),
  Fac2 = sample(letters[1:3], 10, replace = T),
  Num = sample(1:20, 10)
)
df1
   Fac1 Fac2 Num
1     A    b  19
2     B    c  15
3     C    b  12
4     D    c   3
5     E    b   8
6     A    b   5
7     B    b   2
8     C    b   9
9     D    a  10
10    E    a  13

现在我删除有值的所有行AFac1,并分别bFac2

df2 <- df1[-which(df1$Fac1=="A" | df1$Fac2=="b"),]

一切看起来不错,这些值的行已从数据框中消失:

df2
   Fac1 Fac2 Num
2     B    c  15
4     D    c   3
9     D    a  10
10    E    a  13

但是,如果我这样做table,则因子水平仍然存在:

table(df2$Fac1)
A B C D E 
0 1 0 2 1 

如何能在不需要的因子水平从过滤数据框中取出为好

tmfmnk

你可以做:

table(droplevels(df2$Fac1))

B C D E 
1 1 1 1 

或应用于整个df:

df2 <- droplevels(df1[-which(df1$Fac1 == "A" | df1$Fac2 == "b"), ])

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

如何在多索引数据框中删除空级别

如何将因子级别设置为它们在数据框中显示的顺序?

R上的传单:如何为数据框中的每个因子级别创建图层和颜色

如何在 R 的数据框中创建具有三个级别的因子?

在数据框中重新排序因子名称的级别

如何从过滤后的数据框中删除冗余索引

如何从Spark数据框中删除/过滤特定行

过滤/子集R中数据框中的所有因子

粘贴数据框而不更改因子级别

如何确定数据框中的两个单元格是否属于相同的预先指定的因子级别

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

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

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

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

导入CSV数据时删除数据框中的级别

R:从数据框中删除列表中的多个级别

删除data.table中的因子级别

按数据框中因子列的级别计算字符列中的元素数

重播时如何从内存中删除级别1?

基于因子过滤数据框 - R

将列名称与数据框中的因子级别结合起来

在数据框中的因子级别上应用自定义函数

R:在数据框中,使用因子变量的级别时出现错误

python - 如何通过从python中的选定行中删除NULL值来过滤数据框?

如何从R中少于2个唯一级别的数据框中删除列

使用“级别”语句跨越数据框的多个列的崩溃因子

输出数据框中所有因子的级别数

更改因子级别并重新排列数据框