【问题标题】:Filter and subset function only hiding rows, not deleting?过滤器和子集功能只隐藏行,不删除?
【发布时间】:2021-01-30 15:41:13
【问题描述】:

我正在尝试删除虚构实验中的某些试验,但过滤器/子集函数似乎只是隐藏了行,而不是完全摆脱它们。

例如。使用虹膜样本数据:

> 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,它们只是不可见。我怎样才能完全摆脱这些行??

【问题讨论】:

    标签: r dataframe filter dplyr


    【解决方案1】:

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

    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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      相关资源
      最近更新 更多