使用dplyr进行分组和过滤的组织结构

时间:2019-10-25 17:27:12

标签: r dataframe dplyr data-analysis

当我按如下方式组织分析时:

group_by(transactions.DF,MonthCode) %>% 
   filter(str_detect(transactions.DF$Description,"Innocean")) %>% 
   summarize(monthly.income =  sum(Amount))

我收到以下错误: 错误:结果的长度必须为84,而不是3029

当我按如下方式组织分析时:

transactions.DF %>% 
    filter(str_detect(transactions.DF$Description,"Innocean")) %>% 
    group_by(.$MonthCode) %>% 
    summarize(monthly.income =  sum(Amount))

我得到了结果。

我认为过滤器可以保持我的分组结构并可以进行分析

1 个答案:

答案 0 :(得分:1)

问题是,在transactions.DF$中使用filter会破坏分组并从整个列中获取值,而不是每个'MonthCode'的'Description'值

library(dplyr)
library(stringr)
transactions.DF %>%
   group_by(MonthCode) %>% 
   filter(str_detect(Description,"Innocean")) %>%
   summarize(monthly.income = sum(Amount))

注意:objectIdentifier$函数中不需要tidyverse。在某些情况下,我们可以从另一个数据集中提取列并进行比较