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
summarise(myfun = myfun(column))to work on the chunk where myfun is a custom function that will work on the chunk. If you turn onbrowser, you'll be able to see the values that are being processed. - Roman Luštrik