質問

XTSはquantmodでそれらを処理できるようにすると、

私は、CSVファイルから時系列を読んで、それを保存しようとしています。問題は、数値が解析されていないということです。

CSVファイルます:

name;amount;datetime
test1;3;2010-09-23 19:00:00.057
test2;9;2010-09-23 19:00:00.073

Rコード:

library(xts)
ColClasses = c("character", "numeric", "character")
Data <- read.zoo("c:\\dat\\test2.csv", index.column = 3, sep = ";", header = TRUE, FUN = as.POSIXct, colClasses = ColClasses)
as.xts(Data)

結果:

                    name    amount
2010-09-23 19:00:00 "test1" "3"   
2010-09-23 19:00:00 "test2" "9"   
を参照してください量の欄には、文字データが含まれていますが、数値であることを期待していました。

?私のコードの何が問題になってい
役に立ちましたか?

解決

あなたがデータタイプを混在させることはできませんのでzooxts両方の内部データ構造は、matrixです。

<時間>

だけがread.tableにデータを読み込みます:

Data <- read.table("file.csv", sep=";", header=TRUE, colClasses=ColClasses)

私はあなたのデータはサブセカンドを持って気づく、あなたがxts::align.timeに興味があるかもしれません。このコードは、Dataを取り、秒で各"name"ためのコラムで一つのオブジェクトを作成します。

NewData <- do.call( merge, lapply( split(Data,Data$name), function(x) {
  align.time( xts(x[,"amount"],as.POSIXct(x[,"datetime"])), n=1 )
}) )

あなたは地球環境内のオブジェクトのtest1test2を作成したい場合は、あなたのような何かを行うことができます:

lapply( split(Data,Data$name), function(x) {
  assign(x[,"name"], xts(x[,"amount"],as.POSIXct(x[,"datetime"])),envir=.GlobalEnv)
})

他のヒント

あなたは動物園やXTSオブジェクトの数値や文字データを混在させることはできません。しかし、名前の欄には、時系列データであることを意図していない場合ではなく、複数の時系列間などTEST1、TEST2のための1つの、のための1つを区別するためのものである、あなたは、このような分裂を引き起こすために、スプリット= 1を使用して、カラム1に分割することができます次のコードに示すように。 (彼らはどのような場合にはあるでしょうが)あなたは出力にサブ秒は表示されませんdigits.secsを設定してくださいまたは他なります:

options(digits.secs = 3)
z <- read.zoo("myfile.csv", sep = ";", split = 1, index = 3, header = TRUE, tz = "")
x <- as.xts(z)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top