首页 > 解决方案 > 使用 2 个选择动词在 dplyr 中选择数据子集

问题描述

我目前有这个 dplyr 脚本来选择某些数据点。在第一个选择语句中,我收集了所有需要的列。在汇总语句中,我正在创建一些需要的操作(基本上是串联)。在我的最终选择动词中,我希望选择最终选择语句中的内容。但是,当我查看我的数据框时,它仍然包含在汇总动词中使用的列,尽管它们没有在最终选择版本中被选中。我想删除这些列。下面是剩余但想要排除的列的屏幕截图(红色)

data <-  qc_sales %>%
  mutate(Call_For_Price = ifelse(CFP_FLG == 1, "TRUE", "FALSE")) %>% 
 filter(    STR_NBR != '8119'
          , Opened_Quote_Flag == 1
          , LWK_TY_LY_FLG == 'TY'
          , MVNDR_NBR %in% c('60031167', '60688509', '60074051', '60148060', '60086898', '60080204')
          , !SUB_DEPT_NBR %in% c('0025','0028')) %>% 
   select(  QUOTE_DT
          , COM_ORDER_NBR  
          , STR_NBR
          , ST_CD
          , BRANCH_NM
          , MKT_NBR
          , MKT_NM
          , ASSC_FRST_NM
          , ASSC_LAST_NM
          , MAIN_STR_PHN_NBR
          , MVNDR_NBR
          , MVNDR_NM
          , SUB_DEPT_NBR
          , SUB_DEPT_DESC
          , PROD_DESC
          , ADD_PROD_DESC
          , Manufacturer_Model_NBR
          , Call_For_Price
          , QUOTE_DLRS) %>% 
  group_by(QUOTE_DT
          , COM_ORDER_NBR  
          , STR_NBR
          , ST_CD
          , BRANCH_NM
          , MKT_NBR
          , MKT_NM
          , ASSC_FRST_NM
          , ASSC_LAST_NM
          , MAIN_STR_PHN_NBR
          , MVNDR_NBR
          , MVNDR_NM
          , SUB_DEPT_NBR
          , SUB_DEPT_DESC
          , PROD_DESC
          , ADD_PROD_DESC
          , Manufacturer_Model_NBR
          , Call_For_Price
            ) %>% 
  summarise(Quote_Dollars =sum(QUOTE_DLRS)
          , Sub_Dept = MAX(CONCAT(SUB_DEPT_NBR,'-', SUB_DEPT_DESC))
          , Market_Nbr_Nm = MAX(CONCAT(MKT_NBR,'-', MKT_NM))
          , Associate_Name = MAX(CONCAT(ASSC_FRST_NM,'-', ASSC_LAST_NM))
          , MVNDR = MAX(CONCAT(MVNDR_NBR,'-', MVNDR_NM))) %>% 
  select(  QUOTE_DT
         , COM_ORDER_NBR
         , STR_NBR
         , ST_CD
         , BRANCH_NM
         , MAIN_STR_PHN_NBR
         , Market_Nbr_Nm
         , Associate_Name
         , MAIN_STR_PHN_NBR
         , Sub_Dept
         , MVNDR
         , PROD_DESC
         , ADD_PROD_DESC
         , Manufacturer_Model_NBR
         , Call_For_Price
         , Quote_Dollars) %>% 
  arrange(desc(Quote_Dollars)) %>%  
  collect()

在此处输入图像描述

换句话说,如果突出显示的列没有在第二个选择动词中被选中,我不明白为什么突出显示的列会包含在我的数据框中。我以为dplyr中的操作顺序基本上是降序的

标签: rdplyrtidyverse

解决方案


尝试按如下方式执行此操作。删除分组

...  
summarise(Quote_Dollars =sum(QUOTE_DLRS)
          , Sub_Dept = MAX(CONCAT(SUB_DEPT_NBR,'-', SUB_DEPT_DESC))
          , Market_Nbr_Nm = MAX(CONCAT(MKT_NBR,'-', MKT_NM))
          , Associate_Name = MAX(CONCAT(ASSC_FRST_NM,'-', ASSC_LAST_NM))
          , MVNDR = MAX(CONCAT(MVNDR_NBR,'-', MVNDR_NM))) %>% 
ungroup() %>%
...

或者

...  
summarise(Quote_Dollars =sum(QUOTE_DLRS)
          , Sub_Dept = MAX(CONCAT(SUB_DEPT_NBR,'-', SUB_DEPT_DESC))
          , Market_Nbr_Nm = MAX(CONCAT(MKT_NBR,'-', MKT_NM))
          , Associate_Name = MAX(CONCAT(ASSC_FRST_NM,'-', ASSC_LAST_NM))
          , MVNDR = MAX(CONCAT(MVNDR_NBR,'-', MVNDR_NM))
          , .groups = "drop") %>% 
...

推荐阅读