首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- dplyr函数计数

R- dplyr函数计数
EN

Stack Overflow用户
提问于 2016-09-21 17:52:12
回答 1查看 260关注 0票数 1

我其实有两个相关的问题。

第一个问题涉及函数中dplyr::count的包含。我正在编写一个函数来计算比例(%)。当我使用group_by时,该函数完美地工作,例如

代码语言:javascript
复制
library(dplyr) 
library(lazyeval)

dprop = function(data, ...) {
  data %>% group_by_(.dots = lazyeval::lazy_dots(...))%>% 
    summarise(n = n()) %>% 
    mutate(n = n / sum(n))
} 

(在随机数据集上)

代码语言:javascript
复制
 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编写它时,它不起作用

代码语言:javascript
复制
dprop2 = function(data, ...) {
  data %>% 
    count_(.dots = lazyeval::lazy_dots(...)) %>% 
    mutate(n = n / sum(n))
} 

为什么?

第二个问题涉及在函数中包含第二个grouping。有时,在计算比例时,我需要更改基数,例如

代码语言:javascript
复制
group_by_(.dots = lazyeval::lazy_dots(...)) %>% 
       summarise(n = n()) %>% 
        group_by(UNIQUEVAR) %>% 
       mutate(n = n / sum(n))

我试图在函数中包含另一个变量,但它不起作用

代码语言:javascript
复制
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))
} 

知道吗?

EN

回答 1

Stack Overflow用户

发布于 2016-09-26 14:11:05

我终于找到了

count

代码语言:javascript
复制
dprop = function(data, ...) {
  data %>% 
    count_(vars = lazyeval::lazy_dots(...)) %>% 
    mutate(n = n / sum(n))
} 

和不同的分组

代码语言:javascript
复制
dprop_group = function(data, ...) {
  data %>% 
    count_(vars = lazyeval::lazy_dots(...) ) %>% 
    mutate(n = n / sum(n)) %>% 
    group_by(group_col) %>% 
    summarise(n = n())
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39623388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档