r - dplyr group_by 在汇总后保留额外的列

标签 r dplyr tsibble

我对这个完全不知所措 - 我正在使用来自 tsibble 的“行人”数据集。我想获得每个月/每年的总计数。我首先添加一个 month_year 列,然后用 sum 汇总数据,如下所示:

library("tidyverse")
library("tsibble")

df1 <- pedestrian
df1$month_year <- format(as.Date(df1$Date), "%Y-%m")

count_all <- df1 %>%  
  dplyr::group_by(month_year) %>% 
  dplyr::summarise(total = sum(Count))

count_all 的摘要如下所示:

  month_year          Date_Time                         total      
 Length:17542       Min.   :2015-01-01 00:00:00.0   Min.   :   12  
 Class :character   1st Qu.:2015-07-02 17:15:00.0   1st Qu.:  349  
 Mode  :character   Median :2016-01-01 11:30:00.0   Median : 2090  
                    Mean   :2016-01-01 11:44:40.2   Mean   : 2593  
                    3rd Qu.:2016-07-02 04:45:00.0   3rd Qu.: 4455  
                    Max.   :2016-12-31 23:00:00.0   Max.   :15990

为什么要保留Date_Time?我怎样才能防止它影响摘要(例如防止它给我 17,542 行而不是预期的 24 行)。如果我像这样删除摘要之前的列:

df1$Date_Time <- NULL

然后它就可以正常工作,结果摘要如下所示:

  month_year            total        
 Length:24          Min.   :1148276  
 Class :character   1st Qu.:1756898  
 Mode  :character   Median :1927154  
                    Mean   :1895161  
                    3rd Qu.:2066043  
                    Max.   :2393675  

这个解决方案很好,但我想知道问题的原因是什么,以便将来避免它(这次很容易发现问题,但可能并不总是那么直接)。

预先感谢您的帮助!

最佳答案

数据集pedestrian是一个tsibble,以传感器为键,以Date_Time为索引。对 tsibble 执行的任何操作都将保留索引。您可以通过转换回 tibble 来删除索引。

pedestrian %>%
  as_tibble() %>% 
  mutate(ym = yearmonth(Date)) %>% 
  dplyr::group_by(ym) %>% 
  dplyr::summarise(total = sum(Count))

关于r - dplyr group_by 在汇总后保留额外的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72698307/

相关文章:

r - 无操作函数作为 stopifnot() 的条件替换

r - Shiny 正常退出,代码为 137,信号 9 (SIGKILL)

r - 根据列的子字符串创建行

r - 长格式 tsibble 中的多个时间序列

r - 在 R 中按顺序标记句子?

r - 在 R 中从 html 中提取声明的变量

r - 使用 dplyr 切片重复出现的值

r - 在 dplyr 中将 starts_with 与 group_by 结合使用

r - tsibble——当没有隐含的差距时,你如何绕过

r - 如何使用 tsibble 和 fable 指定服务时间的间隔或频率?