这个问题在这里已有答案:
我已经采用了虹膜data.frame,然后过滤掉了物种中的“setosa”。
当我做tapply()
时,它给了我最初在该专栏中的所有3件事情的摘要。为什么它会让我看到setosa为NA。它不应该知道塞托萨!
library(dplyr)
a <-filter(iris, Species != "setosa")
tapply(a$Sepal.Length, a$Species, mean)
结果:
tapply(a$Sepal.Length, a$Species, mean)
# setosa versicolor virginica
# NA 5.936 6.588
我错过了什么?
这是因为在过滤后的数据框中,列Species
仍然是3个级别的因子,即使列中只有2个级别。您可以使用droplevels
删除未使用的级别:
library(dplyr)
a <- droplevels(filter(iris, Species != "setosa"))
tapply(a$Sepal.Length, a$Species, mean)
# versicolor virginica
# 5.936 6.588