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