R中每日面板数据的每周平均值
Weekly average of daily panel data in R
我有一个大型面板数据集,每天大约有 400 万次观察 (Overview of my Dataset)。
变量 symbol 描述了数据集中包含的 952 只不同的股票,其他变量是一些与股票相关的日常指标。我想计算代码中包含的 952 只股票中每只股票的变量 rv、rskew、rkurt 和 rsj 的每周平均值。
我尝试用 group_by(符号)对数据集进行分组,但后来我没能以正确的方式汇总每日观察结果。
我对 R 不是很有经验,非常感谢这里的一些帮助。
使用 lubridate
和 dplyr
包很简单:
library(dplyr)
library(lubridate)
set.seed(123)
df <- data.frame(date = seq.Date(ymd('2020-07-01'),ymd('2020-07-31'),by='day'),
sybol = 'a',
x = runif(31),
y = runif(31),
z = runif(31)
)
df <- df %>%
mutate(year = year(date),
week = week(date),
) %>%
group_by(year, week, symbol) %>%
summarise(x = mean(x),
y = mean(y),
z = mean(z)
)
> df
# A tibble: 5 x 6
# Groups: year, week [5]
year week symbol x y z
<dbl> <dbl> <fct> <dbl> <dbl> <dbl>
1 2020 27 a 0.555 0.552 0.620
2 2020 28 a 0.652 0.292 0.461
3 2020 29 a 0.495 0.350 0.398
4 2020 30 a 0.690 0.495 0.609
5 2020 31 a 0.466 0.378 0.376
我有一个大型面板数据集,每天大约有 400 万次观察 (Overview of my Dataset)。
变量 symbol 描述了数据集中包含的 952 只不同的股票,其他变量是一些与股票相关的日常指标。我想计算代码中包含的 952 只股票中每只股票的变量 rv、rskew、rkurt 和 rsj 的每周平均值。
我尝试用 group_by(符号)对数据集进行分组,但后来我没能以正确的方式汇总每日观察结果。
我对 R 不是很有经验,非常感谢这里的一些帮助。
使用 lubridate
和 dplyr
包很简单:
library(dplyr)
library(lubridate)
set.seed(123)
df <- data.frame(date = seq.Date(ymd('2020-07-01'),ymd('2020-07-31'),by='day'),
sybol = 'a',
x = runif(31),
y = runif(31),
z = runif(31)
)
df <- df %>%
mutate(year = year(date),
week = week(date),
) %>%
group_by(year, week, symbol) %>%
summarise(x = mean(x),
y = mean(y),
z = mean(z)
)
> df
# A tibble: 5 x 6
# Groups: year, week [5]
year week symbol x y z
<dbl> <dbl> <fct> <dbl> <dbl> <dbl>
1 2020 27 a 0.555 0.552 0.620
2 2020 28 a 0.652 0.292 0.461
3 2020 29 a 0.495 0.350 0.398
4 2020 30 a 0.690 0.495 0.609
5 2020 31 a 0.466 0.378 0.376