r - 从公司的每日回报中寻找每周回报
问题描述
我有看起来像这样的数据
co_code company_name co_stkdate dailylogreturn
1 A 01-01-2000 0.76
1 A 02-01-2000 0.75
.
.
.
1 A 31-12-2019 0.54
2 B 01-01-2000 0.98
2 B 02-01-2000 0.45
. . 等等
我想找到等于一周每日日志回报总和的每周回报。
输出应该是这样的
co_code company_name co_stkdate weeklyreturns
1 A 07-01-2000 1.34
1 A 14-01-2000 0.95
.
.
.
1 A 31-12-2019 0.54
2 B 07-01-2000 0.98
2 B 14-01-2000 0.45
我尝试在 quantmod 包中应用函数,但这些函数仅适用于 xts 对象。xts 对象中的另一个问题是不能使用函数“group_by()”。因此,我只想在通常的数据框中工作。
代码看起来像这样
library(dplyr)
### Reading txt file
df <- read.csv("33339_1_120_20190405_165913_dat.csv")
计算每日日志回报
df <- mutate(df, "dailylogrtn"=log(nse_returns)) %>% as.data.frame()
格式化日期
df$co_stkdate<- as.Date(as.character(df$co_stkdate), format="%d-%m-%Y")
解决方案
由于我们不知道您每周有多少天获得 a dailylogreturn
,因此可能会有 NA,我建议按周和年分组:
#sample data
df <- data.frame(co_stkdate = rep(seq.Date(from = as.Date("2000-01-07"), to = as.Date("2000-02-07"), by = 1), 2),
dailylogreturn = abs(round(rnorm(64, 1, 1), 2)),
company_name = rep(c("A", "B"), each = 32))
df %>%
mutate(co_stkdate = as.POSIXct(co_stkdate),
year = strftime(co_stkdate, "%W"),
week = strftime(co_stkdate, "%Y")) %>%
group_by(company_name, year, week) %>%
summarise(weeklyreturns = sum(dailylogreturn, na.rm = TRUE))
# A tibble: 12 x 4
# Groups: company_name, year [12]
company_name year week weeklyreturns
<fct> <chr> <chr> <dbl>
1 A 01 2000 6.31
2 A 02 2000 6.11
3 A 03 2000 6.02
4 A 04 2000 8.27
5 A 05 2000 4.92
6 A 06 2000 0.5
7 B 01 2000 1.82
8 B 02 2000 6.6
9 B 03 2000 7.55
10 B 04 2000 7.63
11 B 05 2000 7.54
12 B 06 2000 1.03
推荐阅读
- javascript - 检查对象中是否存在键**在任何级别**
- reactjs - 如何防止 npm run build 删除构建中的目录
- javascript - 尝试使用引导程序和 js 对列表进行排序
- typescript - 如何在编译时捕获子类型对超类型的分配?
- angular - TypeError:无法读取未定义的属性“employeeName”
- java - 如何操纵 Instant 添加两天和基于字符串的时间?
- javascript - 解压缩器忽略空目录
- javascript - 错误:“找不到模块 'react-search-input' 的声明文件”
- java - 从 Spring Boot 应用程序通过 OAuth 2.0 访问内部 REST API
- python-3.x - 输入后如何删除换行符?