如何遍历重复数据集以获得每月总计?

How to iterate through repeated dataset to get monthly totals?

我将如何遍历 R 中的数据框以根据日期(任意顺序和数量)获取每个变量的总量?

Date          Var
2019-03-1    A    
2019-01-1    A
2019-03-1    B
2019-02-1    A
2019-01-1    A
2019-01-1    B
2019-02-1    A
2019-02-1    A
2019-02-1    B
2019-01-1    A
2019-03-1    C

填充包含

的另一个框架
Date         Var A          Var B            Var C
2019-01-1    3              1                0
2019-02-1    3              1                0
2019-03-1    1              1                1

我们得到 'Date'、'Var' 的 count 并使用 pivot_wider

从 'long' 重塑为 'wide'
library(dplyr)
library(tidyr) #1.0.0
library(stringr)
df1 %>% 
   count(Date, Var = str_c('Var_', Var)) %>% 
   pivot_wider(names_from = Var, values_from = n, values_fill = list(n = 0))
# A tibble: 3 x 4
#  Date      Var_A Var_B Var_C
#  <chr>     <int> <int> <int>
#1 2019-01-1     3     1     0
#2 2019-02-1     3     1     0
#3 2019-03-1     1     1     1

base R中,这可以通过table

来完成
table(df1)

数据

df1 <- structure(list(Date = c("2019-03-1", "2019-01-1", "2019-03-1", 
"2019-02-1", "2019-01-1", "2019-01-1", "2019-02-1", "2019-02-1", 
"2019-02-1", "2019-01-1", "2019-03-1"), Var = c("A", "A", "B", 
"A", "A", "B", "A", "A", "B", "A", "C")),
class = "data.frame", row.names = c(NA, 
-11L))

这是 data.table

中的简单单行
library(data.table)
dcast( DT, Date ~ Var)

#         Date A B C
# 1: 2019-01-1 3 1 0
# 2: 2019-02-1 3 1 0
# 3: 2019-03-1 1 1 1

示例数据

DT <- data.table::fread("Date          Var
2019-03-1    A    
2019-01-1    A
2019-03-1    B
2019-02-1    A
2019-01-1    A
2019-01-1    B
2019-02-1    A
2019-02-1    A
2019-02-1    B
2019-01-1    A
2019-03-1    C")