dplyr

2014-09-28 21 views
6

'da özetlemek için daha fazla argüman ekleyin. Bu soru, summarise_each dışında bir işlevi birden fazla argüman kullanarak tanımlamanın yanı sıra argümanı doğrudan summarise_each içine eklemenin başka bir yolu var mı? Ben NAs.this şekilde olmadan ortalamasını almak istiyorum Örneğindplyr

Böyle more_args seçenek olarak, doğrudan summarise_each için na.rm=TRUE eklemek için bir yol olup olmadığını merak ediyorum

mean_fun=function(x)mean(x,na.rm=TRUE) 
AA_group=AA_new %>% group_by(tractID) 
AA_group %>% summarise_each(funs(mean_fun)) 

çalışır?

ve ayrıca doğrudan yani summarise_each için mean_fun koyarsanız,

AA_group %>% summarise_each(funs(function(x)mean(x,na.rm=TRUE))) 

ve hata biz summarise_each kullanmak istediğiniz her zaman, biz tanımlamak zorunda anlamına mı

expecting a single value 

olduğunu Bunun dışında işlev?

+0

Neden [tekrarlanabilir bir örnek] beslemez (http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-tekrarlanabilir-örnek) örnek giriş ve istenen çıkış ile. Bu, başkalarının sorunuza cevap vermesini çok daha kolaylaştıracaktır. – MrFlick

+1

'summarise_each (funs (ortalama (., Na.rm = TRUE))) '? – A5C1D2H2I1M1N2O1R2T1

+0

çalıştığını @AnandaMahto !! finally..thx! – MYjx

cevap

12

Ben ?funs de belgelenmiş gibi, . aradığınız tahmin ediyorum.

Burada "iris" veri kümesini kullanarak, ama içine biraz NA değerler ekleyerek, küçük bir örnek. Şimdi

iris2 <- iris 
set.seed(1) 
iris2[-5] <- lapply(iris2[-5], function(x) { 
    x[sample(length(x), sample(10, 1))] <- NA 
    x 
}) 

aşağıdaki karşılaştırmak:

iris2 %>% 
    group_by(Species) %>% 
    summarise_each(funs(mean)) 
# Source: local data frame [3 x 5] 
# 
#  Species Sepal.Length Sepal.Width Petal.Length Petal.Width 
# 1  setosa  5.006  3.428   NA   NA 
# 2 versicolor   NA   NA   NA   NA 
# 3 virginica   NA   NA   NA   NA 


iris2 %>% 
    group_by(Species) %>% 
    summarise_each(funs(mean_fun)) 
# Source: local data frame [3 x 5] 
# 
#  Species Sepal.Length Sepal.Width Petal.Length Petal.Width 
# 1  setosa  5.006000 3.428000  1.455319 0.2468085 
# 2 versicolor  5.939583 2.767347  4.256250 1.3208333 
# 3 virginica  6.597959 2.979167  5.547917 2.0191489 

iris2 %>% 
    group_by(Species) %>% 
    summarise_each(funs(mean(., na.rm = TRUE))) 
# Source: local data frame [3 x 5] 
# 
#  Species Sepal.Length Sepal.Width Petal.Length Petal.Width 
# 1  setosa  5.006000 3.428000  1.455319 0.2468085 
# 2 versicolor  5.939583 2.767347  4.256250 1.3208333 
# 3 virginica  6.597959 2.979167  5.547917 2.0191489 
+0

thx! dokümantasyon bu belirtmez neden me..but için çalışır ya da R dilde çok yaygındır? – MYjx

+0

@MYjx, belgelendiği yer için 'funs 'konusuna bakın. – A5C1D2H2I1M1N2O1R2T1

+0

Thx !! Bu çok yararlı! – MYjx