筛选器和子集功能仅隐藏行而不删除吗?

问题描述

我正在尝试删除一个虚构实验中的某些试验,但是过滤器/子集功能似乎只是在隐藏行,而不能完全消除它们。

例如使用虹膜样本数据:

> xtabs(Sepal.Length~Species,data=iris,)
Species
    setosa versicolor  virginica 
     250.3      296.8      329.4 

> iris2 <- subset(iris,Species!="virginica")
> xtabs(Sepal.Length~Species,data=iris2)
Species
    setosa versicolor  virginica 
     250.3      296.8        0.0 

> iris3 <- filter(iris,Species=="virginica")
> xtabs(Sepal.Length~Species,data=iris3)
Species
    setosa versicolor  virginica 
       0.0        0.0      329.4 

在全球环境中,数据框似乎具有正确数量的观测值,但仍保持过滤/细分的因子不变。我也不能使用任何形式的“删除NA”或“删除0”功能,因为它们不是0,它们只是不可见。如何完全摆脱这些行?

解决方法

过滤数据框不会更改因子级别的数量。

iris %>% 
   filter(Species == "virginica") %>%
   pull(Species) %>%
   levels(.)

[1] "setosa"     "versicolor" "virginica" 

如果您不想汇总所有级别,则需要删除没有数据的级别。

iris3 <- filter(iris,Species=="virginica") %>%
  mutate(Species = fct_drop(Species))

xtabs(Sepal.Length~Species,data=iris3)

Species
virginica 
    329.4 

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...