2011-01-21 119 views
4

我有它在下列格式日期的CSV文件: 25月 - 2004年數據轉換成「XTS」對象

我想讀它作爲「XTS」對象,從而使用功能「periodReturn」在quantmod包。

我可以使用該功能的以下文件?

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 

引導我一樣。

回答

3

不幸的是,我不能說ts部分,但這是如何將日期轉換爲適當的格式,可以通過日期(或時間)等其他函數讀取。 您可以將數據導入一個data.frame像往常一樣(see here if you've missed it)。然後,您可以使用strptime函數將Date列轉換爲POSIXltPOSIXt)類。

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 
+0

感謝Roman..I已轉換的data..I'll支票「XTS」 part..Thanks再次很多:) – Nibha 2011-01-21 09:31:05

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"取代。