2014-06-10 19 views
33

Ben dplyr ile tüm plyr aramaları yerine çalışıyorum. Orada birkaç snags hala ve bunlardan biri group_by fonksiyonu ile olduğunu. Ben uygulamak ve ben listelemek gruplama değişkenlere dayalı birleştirmek, ikinci ddply argüman olarak aynı şekilde davranır ve bir bölünme yapar düşünün. Ama durum böyle görünmüyor. İşte oldukça önemsiz bir örnek. nasıl dplyr ile özel bir işlevi kullanan bir ddply davranışı çoğaltmak için?

en Şimdi şöyle iris veri kümesindeki türler bölünmüş ve her parça için bu işlevi uygulayabilirsiniz saçma fonksiyonu

mm <- function(x) return(x[1:5, ]) 

tanımlayalım.

ddply(iris, .(Species), mm) 

Bu amaçlanan şekilde çalışır. Ancak, dplyr ile aynı şeyi denediğimde, beklendiği gibi çalışmıyor.

iris %>% group_by(Species) %>% mm 

Neyi yanlış yapıyorum? ?do gösterildiği gibi

cevap

34

, kendi ifadesinde . ile bir grup anlamına gelebilir. Aşağıdaki (teşekkürler @docendodiscimus) gibi bir şey yapabilirsiniz, dplyr ile gruplara özel bir işlevi uygulamak için, Daha genel

iris %>% group_by(Species) %>% do(.[1:5, ]) 

# Source: local data frame [15 x 5] 
# Groups: Species 
# 
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
# 1   5.1   3.5   1.4   0.2  setosa 
# 2   4.9   3.0   1.4   0.2  setosa 
# 3   4.7   3.2   1.3   0.2  setosa 
# 4   4.6   3.1   1.5   0.2  setosa 
# 5   5.0   3.6   1.4   0.2  setosa 
# 6   7.0   3.2   4.7   1.4 versicolor 
# 7   6.4   3.2   4.5   1.5 versicolor 
# 8   6.9   3.1   4.9   1.5 versicolor 
# 9   5.5   2.3   4.0   1.3 versicolor 
# 10   6.5   2.8   4.6   1.5 versicolor 
# 11   6.3   3.3   6.0   2.5 virginica 
# 12   5.8   2.7   5.1   1.9 virginica 
# 13   7.1   3.0   5.9   2.1 virginica 
# 14   6.3   2.9   5.6   1.8 virginica 
# 15   6.5   3.0   5.8   2.2 virginica 

: Aşağıdakiler ddply çıkışını çoğaltmak olacaktır

iris %>% group_by(Species) %>% do(mm(.)) 
+6

+1 artı 'iris%>% group_by (Türler)%>% do (mm().)' ya da sadece kullanmak 'iris%>% group_by (Türler):% OP onun özel işlevini kullanmak isterse, o da bunu yapabilir >% do (baş (., 5)) ' –

İlgili konular