我实际上有两个相关的问题。
第一个涉及函数中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
。有时在计算比例时,我需要更改 base ,例如
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))
}
任何想法?
答案 0 :(得分:0)
我终于找到了什么
使用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())
}