在dplyr中创建具有组长度的新列

时间:2019-08-23 19:47:48

标签: r dplyr

我正在尝试创建一个新数据框,该数据框由一个列(即下面的Petal.Width)分组,并具有从另一个变量(即Species)的组中创建的新列,并具有来自每个变量的观察数物种组。我认为dplyr可以做到这一点,但我无法完全满足需要

我已经尝试过此代码,但是它返回的是物种中所有观测值的长度,而不是每个组的长度(即所有列具有相同的数据)

iris=as.data.frame(iris)
groups= iris %>%
  group_by(Petal.Width) %>%
  summarize(Seposa=length(Species == "seposa"),
        Versicolor=length(Species == "versicolor"),
        Virginica=length(Species == "virginica"))

我认为我只是在某个地方犯了一个小错误。请帮忙!

1 个答案:

答案 0 :(得分:1)

正如@ Z.Lin所指出的,在示例中,您需要sum()而不是length,但是使用此方法至关重要,请不要误拼。

这是另一种方法:

library(dplyr)

iris=as.data.frame(iris)

iris %>%
  group_by(Petal.Width, Species) %>%
  count() %>%
  spread(Species, n, fill = 0)