【问题标题】:How can I group my daily date column into monthly date with R?如何使用 R 将我的每日日期列分组为每月日期?
【发布时间】:2021-01-26 21:59:52
【问题描述】:

我有一个名为 Police_notifications 的数据框,这就是它的样子。

datum
1 06-03-2019 11:34:57
2 06-03-2019 11:15:12
3 06-03-2019 11:23:22
4 06-03-2019 11:23:22
5 06-03-2019 11:15:12
6 06-03-2019 11:07:07
7 06-04-2019 11:05:20
8 06-04-2019 11:10:30

日期列从 2015 年 12 月 11 日持续到 2019 年 6 月 3 日。列日期存在于每日日期之外。
日期列中的每一行代表 1 个值。所以我基本上想要的是一个额外的列,加上 1 个月的总值,所以我想要这样:

value    date
100    01-03-2019
200    01-04-2019
150    01-05-2019

我正在寻找一种简单的解决方案,将我的每日日期转换为月份,并在其旁边添加总价值。

额外信息:

                 datum                                   locatie
1  06-03-2019 11:34:57                                   De Bilt
2  06-03-2019 11:23:22                                     Breda
3  06-03-2019 11:23:22                                     Breda
4  06-03-2019 11:15:12                                  Nijmegen
5  06-03-2019 11:07:07                                  Deventer
6  06-03-2019 11:05:27                                   Tilburg
7  06-03-2019 11:04:37 A15 hectometerpaal 144 (thv Neder-Betuwe)
8  06-03-2019 10:59:33                            Oud-Beijerland
9  06-03-2019 10:52:44                                  Den Haag
10 06-03-2019 10:26:46                                  Den Haag

【问题讨论】:

  • 能否添加列名,不确定整数 1 到 8 是否为数据框列值的行号。您可以使用 head(dput(dataframe_name), 10) 分享可重现的示例
  • 使用您的代码添加了更多信息

标签: r date converters


【解决方案1】:

您可以将时间戳转换为包含该月第一天的字符串,然后应用 group_by() 并计数以查找给定月份中的通知数量(如果您想将数字添加为新的列使用 group_by 和 mutate 版本):

df <- data.frame(ID = 1:8,
                 timestamp = c("06-03-2019 11:34:57", "06-03-2019 11:15:12", "06-03-2019 11:23:22",
                               "06-03-2019 11:23:22", "06-03-2019 11:15:12", "06-03-2019 11:07:07",
                               "06-04-2019 11:05:20", "06-04-2019 11:10:30"),
                 stringsAsFactors = F)

library(dplyr)
df %>% 
  mutate(month = format(as.POSIXct(timestamp, format = "%d-%m-%Y %H:%M:%S"), "01-%m-%Y")) %>% 
  group_by(month) %>% 
  count()

df %>% 
  mutate(month = format(as.POSIXct(timestamp, format = "%d-%m-%Y %H:%M:%S"), "01-%m-%Y")) %>% 
  group_by(month) %>% 
  mutate(n = n())

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2019-08-03
    相关资源
    最近更新 更多