如何遍历重复数据集以获得每月总计?
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")
我将如何遍历 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
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")