我是R新手,我想知道如何将每日数据向量转换为每周数据向量。我的代码如下:
library("quantmod")
library("xts")
library("zoo")
library(corrplot)
stock.data <- read.csv2("stocks.csv", sep = ";")
dates <- as.Date(stock.data[,"Date"], format = "%d/%m/%Y")
到目前为止,dates
是包含每日数据信息的向量,stock.data
如下:
Date SPMILA COLCAP SPBLPGPT
1 2/01/2008 -0.002964527 -0.005017742 -0.011225818
2 3/01/2008 0.002456592 -0.002821731 0.017459207
3 4/01/2008 -0.019060974 -0.002886772 -0.002871815
4 7/01/2008 -0.010540054 0 -0.007413185
我尝试将数据转换为每周一次,如下所示:
dates = to.weekly(dates, OHLC = FALSE)
但出现错误:Error in period.apply(x, ep, FUN, ...) : argument "FUN" is missing, with no default
我还尝试将stock.data
转换为每周一次,看看是否可以这样获取日期:
stock.data <- to.weekly(stock.data, OHLC = FALSE)
但是我得到了错误Error in try.xts(x) : Error in as.POSIXlt.character(x, tz, ...) : character string is not in a standard unambiguous format
由于我不确定下一步该怎么做,所以我将不胜感激。
答案 0 :(得分:1)
我制作了最后显示的/tmp/stocks.csv。诀窍是使用read.zoo
,然后to.weekly()
可以使用:
z = read.zoo("/tmp/stocks.csv", format="%d/%m/%Y", sep=';', header=TRUE)
to.weekly(z, OHLC=FALSE)
哪个给:
SPMILA COLCAP SPBLPGPT
2008-01-04 -0.01906097 -0.002886772 -0.002871815
2008-01-07 -0.01054005 0.000000000 -0.007413185
stocks.csv:
Date;SPMILA;COLCAP;SPBLPGPT
2/01/2008;-0.002964527;-0.005017742;-0.011225818
3/01/2008;0.002456592;-0.002821731;0.017459207
4/01/2008;-0.019060974;-0.002886772;-0.002871815
7/01/2008;-0.010540054;0;-0.007413185
答案 1 :(得分:0)
我不能帮助的第一个错误,但是第二个错误告诉您r无法解释日期格式。 R不知道您使用的是DD / MM / YYYY还是MM / DD / YYYY。
使用?to.period查看帮助,它期望打开,低,高,关闭数据。
将示例中的日期转换为每周的日期将无济于事,因为它们相距一个月。
尝试
library("lubridate")
library(xts)
stringdates = c("2/1/2008", "3/1/2008", "4/1/2008")
dates <- mdy(stringdates)
values <- c(1:3)
xtsfr <- xts( values, mdy(stringdates))
xtsfr
[,1]
2008-02-01 1
2008-03-01 2
2008-04-01 3
to.weekly(xtsfr)
xtsfr.Open xtsfr.High xtsfr.Low xtsfr.Close
2008-02-01 1 1 1 1
2008-03-01 2 2 2 2
2008-04-01 3 3 3 3
to.yearly(xtsfr)
xtsfr.Open xtsfr.High xtsfr.Low xtsfr.Close
2008-04-01 1 3 1 3
我希望这足以为您提供帮助。如果没有,我会帮助您了解您的问题。