我有CSV文件,其日期格式如下: 25 - 8 - 2004
我希望将其作为“xts”对象读取,以便在quantmod包中使用“periodReturn”函数。
我可以将以下文件用于该功能吗?
Symbol Series Date Prev.Close Open.Price High.Price Low.Price
1 XXX EQ 25-Aug-2004 850.00 1198.70 1198.70 979.00
2 XXX EQ 26-Aug-2004 987.95 992.00 997.00 975.30
指导我。
答案 0 :(得分:3)
不幸的是我不能代表ts
部分,但这就是你如何将日期转换为适当的格式,其他功能可以将其作为日期(或时间)读取。
您可以像往常一样将数据导入data.frame(see here if you've missed it)。然后,您可以使用Date
函数将POSIXlt
列转换为POSIXt
(strptime
)类。
nibha <- "25-Aug-2004" # this should be your imported column
lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C") #temporarily change locale to C if you happen go get NAs
strptime(nibha, format = "%d-%b-%Y")
Sys.setlocale("LC_TIME", lct) #revert back to your locale
答案 1 :(得分:3)
试试这个。我们摆脱了烦扰列并指定了时间索引的格式,然后转换为xts并应用dailyReturn函数:
Lines <- "Symbol Series Date Prev.Close Open.Price High.Price Low.Price
1 XXX EQ 25-Aug-2004 850.00 1198.70 1198.70 979.00
2 XXX EQ 26-Aug-2004 987.95 992.00 997.00 975.30"
library(quantmod) # this also pulls in xts & zoo
z <- read.zoo(textConnection(Lines), format = "%d-%b-%Y",
colClasses = rep(c(NA, "NULL", NA), c(1, 2, 5)))
x <- as.xts(z)
dailyReturn(x)
当然,textConnection(Lines)
只是为了保持示例自包含,实际上将替换为"myfile.dat"
之类的内容。