如何创建提取月份和年份的表

问题描述 投票:0回答:2

我有以下格式的数据

number_of_tickets : "01-01-2019", "02-01-2019", "03-01-2019"......
date              :  1500       ,  1200       , "2000......

这是过去两年的数据,我需要计算每年和每月打开的门票总数,如下所示

      Jan     Feb    Mar....
2019  20570   18702  35078

2020  19794   11325  42723......

我正在尝试使用包

lubridate
dplyr
来总结、变异和许多其他事情,但没有取得任何进展。

任何帮助将不胜感激。

r dplyr
2个回答
2
投票

我想你正在寻找这个

df <- data.frame(
  number_of_tickets = c(1500, 1200, 2000, 1000, 2000, 3000),
  date              = c("01-01-2019", "02-01-2019", "03-01-2019",
                        "01-01-2020", "02-01-2020", "03-01-2020"))


df$date <- as.Date(df$date, format = c("%d-%m-%Y"))

head(df)


df$month <- format(df$date, "%m")
df$year  <- format(df$date, "%y")


head(df)


aggregate(number_of_tickets ~ month + year,
          data = df,
          sum)

最后一次调用的输出是

  month year number_of_tickets
1    01   19              4700
2    01   20              6000

HTH


1
投票

使用 tidyverse 和 lubridate,您也可以继续

df <- data.frame(
  number_of_tickets = c(1500, 1200, 2000, 1000, 2000, 3000),
  date              = c("01-01-2019", "02-01-2019", "03-02-2019",
                        "01-01-2020", "02-01-2020", "03-02-2020"))

library(lubridate)
library(tidyverse)

df %>% mutate(month = month(as.Date(date, format = "%d-%m-%Y")),
              year = year(as.Date(date, format = "%d-%m-%Y"))) %>%
  pivot_wider(id_cols = "year", names_from = month, values_from = number_of_tickets, values_fn = sum)

# A tibble: 2 x 3
   year   `1`   `2`
  <dbl> <dbl> <dbl>
1  2019  2700  2000
2  2020  3000  3000

pivottabler

library(pivottabler)
library(lubridate)

df$date <- as.Date(df$date, format = "%d-%m-%Y")
df$Month <- month(df$date)
df$Year <- year(df$date)


qpvt(df, rows = "Month", 
     columns = "Year", 
     calculations = "sum(number_of_tickets)")

       2019  2020  Total  
1      2700  3000   5700  
2      2000  3000   5000  
Total  4700  6000  10700
© www.soinside.com 2019 - 2024. All rights reserved.