[問題] error in xts

看板R_Language作者 (豆芽先生)時間11年前 (2013/11/07 18:44), 編輯推噓5(5026)
留言31則, 2人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 新手(沒寫過程式,R 是我的第一次) [問題敘述]: x<-read.table("s.txt",header=T,row.names=c("time")) head(x) adjprc.10000 adjprc.10001 2000-01-31 -4.37500 -2.04167 2000-02-29 -3.25000 -2.08333 2000-03-31 -4.43750 -2.10417 2000-04-30 -4.00000 -2.12500 2000-05-31 -3.10938 -2.10417 2000-06-30 -3.09375 -2.04167 這是我的資料形式,在跑程式時遇到一些問題,大概R是無法判斷我的時間格式, 不知道怎麼轉換成R讀得懂的格式,上網找了幾天資訊還是解決不了。 我是R新手,還請大家教我一下,謝謝。 structure(list(adjprc.10000 = c(-4.375, -3.25, -4.4375, -4, -3.10938, -3.09375, -2.84375, -1.09375, -1.03125, -0.78125, -0.82813, -0.51563, -0.40625, -0.40625, -0.25, -0.23438, -0.21875, 0, NA, NA, NA, NA, NA, NA), adjprc.10001 = c(-2.04167, -2.08333, -2.10417, -2.125, -2.10417, -2.04167, -2.02083, -2.16667, 2.125, 2.20833, 2.33333, 2.33333, 2.25, 2.08333, 2.125, -2.04167, -1.89583, 1.95833, 2, 2.16667, 2.08333, 2.125, 2.0625, 1.95833)), .Names = c("adjprc.10000", "adjprc.10001"), class = "data.frame", row.names = c("2000-01-31", "2000-02-29", "2000-03-31", "2000-04-30", "2000-05-31", "2000-06-30", "2000-07-31", "2000-08-31", "2000-09-30", "2000-10-31", "2000-11-30", "2000-12-31", "2001-01-31", "2001-02-28", "2001-03-31", "2001-04-30", "2001-05-31", "2001-06-30", "2001-07-31", "2001-08-31", "2001-09-30", "2001-10-31", "2001-11-30", "2001-12-31")) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.22.38

11/07 19:30, , 1F
你的時間列式ROW NAMES吧...
11/07 19:30, 1F

11/07 21:58, , 2F
try `strptime(row.names(x))`
11/07 21:58, 2F
>strptime(row.names(time),"%y-%m-%d") 出現character(0),跑code一樣出現 錯誤在xts: order.by requires an appropriate time-based object 應該是要轉換成POSIXt或POSIXct,因為當初從網上抓資料下來有一行code是 x=c("POSIXt","POSIXct"),網上抓下來的資料就可以直接跑沒問題。 不知道為什麼存檔後再讀入檔案就沒辦法跑。 但是我用as.POSIXct(row.names=("time")) 會出現錯誤:缺少引數 "x",也沒有預設值 不知道怎麼改,問題出在哪。

11/08 13:28, , 3F
可以po一下`dump(x, file="x.R")`的結果嗎?
11/08 13:28, 3F

11/08 13:29, , 4F
sorry, 應該是dump("x", file="x.R")
11/08 13:29, 4F
po在上面

11/08 15:13, , 5F
x<-read.table("s.txt",header=T);
11/08 15:13, 5F

11/08 15:13, , 6F
time = strptime(row.names(x), "%Y-%m-%d")
11/08 15:13, 6F

11/08 15:13, , 7F
原po,你INPUT的變數是錯的...
11/08 15:13, 7F
但是改過再跑一樣出現error,直接用R從網路上抓的資料就能跑。不知道問題出在哪

11/08 20:04, , 8F
我的可以
11/08 20:04, 8F
我是指改過雖然成功了,但跑我的code出現同樣的error。

11/08 22:29, , 9F
你的資料要不要PO一小段上來看看
11/08 22:29, 9F
妳是說原始檔嗎?

11/08 23:30, , 10F
"%Y", 不是"%y". 我用strptime(row.names(x),"%Y-%m-%d")
11/08 23:30, 10F
我是用這個code下去跑的,雖然沒顯示error 但是之後跑我的code出現同樣的error in xts

11/08 23:54, , 11F
%Y有成功,%y失敗
11/08 23:54, 11F

11/09 00:42, , 12F
Hmm... 之後什麼code?
11/09 00:42, 12F
http://ideone.com/prg5vf 跑到最後一行時會出現error in xts(x = vec.ret, order.by = index(xts.ret)): order.by requires an appropriate time-based object http://stackoverflow.com/questions/9757430/xts-error-order-by-requires-an-appropriate-time-based-object 這是我參考外國網站有人跟我遇到一樣的問題,可是還是沒辦法解決。

11/09 01:58, , 13F
原PO把你的資料取前三行跟rowname, colname列出來
11/09 01:58, 13F

11/09 01:58, , 14F
可能前十列就夠了
11/09 01:58, 14F

11/09 01:58, , 15F
這樣才能知道為什麼套到你的資料無法使用
11/09 01:58, 15F

11/10 04:05, , 16F
你的資料第一行才是時間,不是rowname,
11/10 04:05, 16F

11/10 04:05, , 17F
因此,應該是用time = strptime(x[,1], "%Y-%m-%d")
11/10 04:05, 17F
可是strptime這個函數是把時間轉換成y-m-d格式,我的資料本身已經是y-m-d格式了。

11/10 04:07, , 18F
抱歉,我誤會了,可是我用rowname也是有成功的
11/10 04:07, 18F

11/10 04:08, , 19F
你的CODE恩..太多,實在沒時間幫你看...
11/10 04:08, 19F
那請問有其他發問平台,可以讓我問問題嗎? 因為我這問題自己解決不了,可是又一定要解決。 這是我dump用R抓下來的資料, structure(c(23.59, 22.28, 25.39, 24.86, 23.51, 22.24, 22.59,...), .Dim = c(167L, 4L), .Dimnames = list(NULL, c("XLY.Adjusted","XLP.Adjusted", "XLE.Adjusted", "XLF.Adjusted")), index = structure(c(949276800,951782400, 954460800, 957052800, 959731200, 962323200, 965001600,967680000, 970272000, 972950400, 975542400,... ), tclass ="Date"), class = c("xts", "zoo"), .indexCLASS = "Date", .indexFORMAT = "%Y-%m-%d", tclass = "Date",tzone = "UTC", src = "yahoo", updated = structure(1384070717.82835, class = c("POSIXct", "POSIXt"))) 差別應該是class不同,當初儲存檔案時把他改成data.frame 不知道在怎麼把檔案的class從data.frame轉換成xts應該才是問題所在。 ※ 編輯: goodparent1 來自: 114.37.240.23 (11/10 21:47)

11/10 23:32, , 20F
你可以參考 ?xts 中的範例
11/10 23:32, 20F

11/10 23:32, , 21F
裡面有把sample_matrix轉換成xts的過程
11/10 23:32, 21F

11/10 23:33, , 22F
發問平台可以參考置底文章,裡面有列一些
11/10 23:33, 22F

11/11 11:24, , 23F
我今天弄好Rstudio後看了一下,問題大概在monthly.returns
11/11 11:24, 23F

11/11 11:25, , 24F
你可能ROC函數要研究一下
11/11 11:25, 24F

11/11 11:25, , 25F
你的問題其實滿複雜的,你的問法也要讓別人花很多時間找真
11/11 11:25, 25F

11/11 11:25, , 26F
正的問題,所以除非運氣好遇到剛好有相關經驗的網友,否則
11/11 11:25, 26F

11/11 11:26, , 27F
找到你可以接受答案可能機會不大...
11/11 11:26, 27F

11/11 11:28, , 28F

11/11 11:32, , 29F
btw, 最後一行改成xts.ret = as.xts(monthly.returns)可跑
11/11 11:32, 29F

11/11 11:33, , 30F
但是我完全不知道跑出來的答案是不是對的,所以請自己小心
11/11 11:33, 30F

11/11 12:15, , 31F
版主用心!
11/11 12:15, 31F
真的非常謝謝兩位幫忙,真的感恩。我在自己研究進修一下。 ※ 編輯: goodparent1 來自: 134.208.22.38 (11/11 13:50)
文章代碼(AID): #1IUsyAti (R_Language)
文章代碼(AID): #1IUsyAti (R_Language)