我对这个完全不知所措 - 我正在使用来自 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/