使用 R 将每日数据转换为每周数据
Converting daily data to weekly data using R
我有两只股票(苹果和Google)的每日数据
library(tidyquant)
dt = tidyquant::tq_get(c("AAPL", "GOOG")) %>%
arrange(symbol, date)
我正在尝试使用以下代码将此数据从每天转换为每周
result = dt %>%
group_by(symbol) %>%
tidyquant::tq_transmute(mutate_fun = to.weekly) %>% data.table
result[symbol == "AAPL" & date == "2017-02-03"]
不知为何,结果是错误的。
例如,AAPL
在 2017-02-03
的每周数据如下使用上述代码-
symbol date open high low close volume
1: AAPL 2017-02-03 32.0775 32.2975 32.04 32.27 98029200
然而,正确的结果应该是-
symbol date open high low close volume
1: AAPL 2017-02-03 30.2325 32.6225 30.1550 32.2700 999124986
有人可以帮我吗?
谢谢!
撰写本文时:一个错误,请参阅 github issue 148。
一种可能的解决方法,使用 tidyr、timetk 和 purrr。使用 timetk 将数据转换为 xts 格式,将数据转换为 weekly 并转回 data.frame 格式。包括来自 tidyr 的 nest
和 unnest
以及来自 purrr 的 map
。 data.table 不需要,但打印数据比 tibbles 好得多。
library(tidyr)
library(timetk)
# library(purrr)
result <- dt %>%
group_by(symbol) %>%
nest() %>%
mutate(data = purrr::map(data, function(x) x %>%
select(date, Open = open, High = high, Low = low, Close = close) %>%
tk_xts(x, select = c(Open, High, Low, Close), date_var = date) %>%
to.weekly %>%
tk_tbl)) %>%
unnest(data) %>%
rename_with( ~ tolower(gsub("..", "", .x, fixed = T))) %>%
rename(date = index)
result %>%
data.table %>%
filter(date == "2017-02-03")
symbol date open high low close
1: AAPL 2017-02-03 30.2325 32.6225 30.155 32.27
2: GOOG 2017-02-03 814.6600 815.8400 790.520 801.49
我有两只股票(苹果和Google)的每日数据
library(tidyquant)
dt = tidyquant::tq_get(c("AAPL", "GOOG")) %>%
arrange(symbol, date)
我正在尝试使用以下代码将此数据从每天转换为每周
result = dt %>%
group_by(symbol) %>%
tidyquant::tq_transmute(mutate_fun = to.weekly) %>% data.table
result[symbol == "AAPL" & date == "2017-02-03"]
不知为何,结果是错误的。
例如,AAPL
在 2017-02-03
的每周数据如下使用上述代码-
symbol date open high low close volume
1: AAPL 2017-02-03 32.0775 32.2975 32.04 32.27 98029200
然而,正确的结果应该是-
symbol date open high low close volume
1: AAPL 2017-02-03 30.2325 32.6225 30.1550 32.2700 999124986
有人可以帮我吗?
谢谢!
撰写本文时:一个错误,请参阅 github issue 148。
一种可能的解决方法,使用 tidyr、timetk 和 purrr。使用 timetk 将数据转换为 xts 格式,将数据转换为 weekly 并转回 data.frame 格式。包括来自 tidyr 的 nest
和 unnest
以及来自 purrr 的 map
。 data.table 不需要,但打印数据比 tibbles 好得多。
library(tidyr)
library(timetk)
# library(purrr)
result <- dt %>%
group_by(symbol) %>%
nest() %>%
mutate(data = purrr::map(data, function(x) x %>%
select(date, Open = open, High = high, Low = low, Close = close) %>%
tk_xts(x, select = c(Open, High, Low, Close), date_var = date) %>%
to.weekly %>%
tk_tbl)) %>%
unnest(data) %>%
rename_with( ~ tolower(gsub("..", "", .x, fixed = T))) %>%
rename(date = index)
result %>%
data.table %>%
filter(date == "2017-02-03")
symbol date open high low close
1: AAPL 2017-02-03 30.2325 32.6225 30.155 32.27
2: GOOG 2017-02-03 814.6600 815.8400 790.520 801.49