我其实有两个相关的问题。
第一个问题涉及函数中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))
} 知道吗?
发布于 2016-09-26 14:11:05
我终于找到了
用count
dprop = function(data, ...) {
data %>%
count_(vars = lazyeval::lazy_dots(...)) %>%
mutate(n = n / sum(n))
} 和不同的分组
dprop_group = function(data, ...) {
data %>%
count_(vars = lazyeval::lazy_dots(...) ) %>%
mutate(n = n / sum(n)) %>%
group_by(group_col) %>%
summarise(n = n())
} https://stackoverflow.com/questions/39623388
复制相似问题