1
我其實有兩個相關的問題。R - dplyr函數計數lazyeval錯誤
第一個涉及函數中dplyr::count
的包含。 我正在寫一個函數來計算比例(%
)。 功能完美的作品,當我用group_by
,如
library(dplyr)
library(lazyeval)
dprop = function(data, ...) {
data %>% group_by_(.dots = lazyeval::lazy_dots(...))%>%
summarise(n = n()) %>%
mutate(n = n/sum(n))
}
(在隨機數據集)
mtcars %>% dprop(am, gear)
am gear n
<dbl> <dbl> <dbl>
1 0 3 0.7894737
2 0 4 0.2105263
3 1 4 0.6153846
4 1 5 0.3846154
然而,當我把它寫使用count
,這是行不通的
dprop2 = function(data, ...) {
data %>%
count_(.dots = lazyeval::lazy_dots(...)) %>%
mutate(n = n/sum(n))
}
爲什麼?
第二個問題涉及在函數中包含第二個grouping
。有時計算比例時,我需要改變基地如
group_by_(.dots = lazyeval::lazy_dots(...)) %>%
summarise(n = n()) %>%
group_by(UNIQUEVAR) %>%
mutate(n = n/sum(n))
我想包括在函數另一個變量,但它不工作
dprop = function(data, UNIQUEVAR, ...) {
data %>% group_by_(.dots = lazyeval::lazy_dots(...)) %>%
summarise(n = n()) %>%
group_by_(.dots = lazyeval::lazy(UNIQUEVAR)) %>%
mutate(n = n/sum(n))
}
什麼想法?
在計數你應該使用'vars'不'.dots'。第二個你想用mutate而不是總結?使用總結下降變量,包括最終'UNIQUEVAR' – rawr
你能告訴我一個例子嗎?謝謝 – giacomo