2014-09-28 18 views
6

câu hỏi của tôi ngoài việc xác định hàm bên ngoài summaryise_each với nhiều đối số, có cách nào khác để thêm đối số trực tiếp trong summaryise_each không?thêm đối số khác để tóm tắt trong dplyr

Ví dụ tôi muốn có được giá trị trung bình mà không NAs.this cách làm việc

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

tôi tự hỏi liệu có một cách để thêm na.rm=TRUE trực tiếp đến summarise_each, chẳng hạn như more_args lựa chọn?

và cũng nếu tôi đặt mean_fun trực tiếp đến summarise_each cụ thể là,

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

và lỗi là

expecting a single value 

Điều đó có nghĩa rằng mỗi khi chúng ta muốn sử dụng summarise_each, chúng ta phải xác định một chức năng bên ngoài đó?

+0

Tại sao không cung cấp một [ví dụ tái sản xuất] (http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example) với đầu vào mẫu và đầu ra mong muốn. Điều này sẽ giúp người khác trả lời câu hỏi của bạn dễ dàng hơn nhiều. – MrFlick

+1

'summaryise_each (funs (mean (., Na.rm = TRUE)))'? – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto nó hoạt động !! cuối cùng..thx! – MYjx

Trả lời

12

Tôi đoán bạn đang tìm kiếm ., như được ghi tại ?funs.

Dưới đây là một ví dụ nhỏ, sử dụng tập dữ liệu "iris", nhưng thêm một số giá trị NA vào đó.

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

Bây giờ, so sánh như sau:

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! nó làm việc cho tôi .. nhưng tại sao tài liệu không chỉ định điều này hoặc nó là rất phổ biến trong ngôn ngữ R? – MYjx

+0

@MYjx, xem '? Funs' cho vị trí được ghi lại. – A5C1D2H2I1M1N2O1R2T1

+0

Thx !! nó rất hữu ích! – MYjx

Các vấn đề liên quan