使用代码获取每个物种的平均花瓣长度
group_sp<-group_by(iris,iris$Species)
mean_plength<-summarise(group_sp,mean(iris$Petal.Length))
mean_plength
获取输出
`iris$Species` `mean(iris$Petal.Length)`
<fctr> <dbl>
1 setosa 3.758
2 versicolor 3.758
3 virginica 3.758
对于所有情况都相同,但事实并非如此,而应该是这样
setosa 1.464
versicolor 4.26
virginica 5.552
我的所有数据集都发生这种情况,谁能告诉我问题是什么
With dplyr
,您不引用列名或使用通常的子集/选择语法引用列(即$
, [
, or [[
)。相反,第一个参数始终是数据,其他参数引用列,就好像它们是常规变量一样。
因此,您的示例的正确语法是:
library("dplyr")
group_sp <- group_by(iris, Species)
mean_plength <- summarise(group_sp, mean_petal_length = mean(Petal.Length))
mean_plength
您的案例中发生的事情是您提到的$Species
and $Petal.Length
全局环境中的列,而不是相关函数调用创建的环境中的列。
另请注意,编写此代码的更惯用的方法是:
iris %>%
group_by(Species) %>%
summarize(mean_petal_length = mean(Petal.Length))
这完全等同于以下内容,因为马格里特管%>%是前向函数应用:
summarize(group_by(iris, Species), mean_petal_length = mean(Petal.Length))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)