Accessing grouped data in dplyr

后端 未结 2 1316
[愿得一人]
[愿得一人] 2021-01-02 05:00

How can I access the grouped data after applying group_by function from dplyr and using %.% operator

For example, If I want to have the first row of each grouped dat

相关标签:
2条回答
  • 2021-01-02 05:39

    The only way I found that may help is using the do function.

    library(dplyr)
    
    g.iris <- group_by(x=iris, Species)
    
    do(g.iris, function(x){ head(x, n=1)})
    
    0 讨论(0)
  • 2021-01-02 05:50

    For your specific case, you can use row_number():

    library(dplyr)
    
    iris %.% 
      group_by(Species) %.%
      filter(row_number(Species) == 1)
    ## Source: local data frame [3 x 5]
    ## Groups: Species
    ## 
    ##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
    ## 1          5.1         3.5          1.4         0.2     setosa
    ## 2          7.0         3.2          4.7         1.4 versicolor
    ## 3          6.3         3.3          6.0         2.5  virginica
    

    This will be a little more natural in version 0.2 since you can omit the variable name:

    # devtools::install_github("hadley/dplyr")
    
    iris %.% 
      group_by(Species) %.%
      filter(row_number() == 1)
    ## Source: local data frame [3 x 5]
    ## Groups: Species
    ## 
    ##   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
    ## 1          5.1         3.5          1.4         0.2     setosa
    ## 2          7.0         3.2          4.7         1.4 versicolor
    ## 3          6.3         3.3          6.0         2.5  virginica
    

    For arbitrary operations, do() is much more useful in 0.2. You give it arbitrary expressions, using . as a placeholder for each group:

    iris %.% 
      group_by(Species) %.%
      do(.[1, ])
    ## Source: local data frame [3 x 6]
    ## Groups: Species
    ## 
    ##      Species Sepal.Length Sepal.Width Petal.Length Petal.Width  Species.1
    ## 1     setosa          5.1         3.5          1.4         0.2     setosa
    ## 2 versicolor          7.0         3.2          4.7         1.4 versicolor
    ## 3  virginica          6.3         3.3          6.0         2.5  virginica
    
    0 讨论(0)
提交回复
热议问题