2016-10-04 5 views
0

私はxtsを作成するためにデータフレームを使用しています。 xtsは作成されますが、xts内のインデックスを除くすべての値は引用内にあります。これは、合計などの多くの関数が機能しないため、データを使用できないことにつながります。R - データフレームをxtsに変換すると、引用が追加されます(xts)

どのように私はxtsを引用なしで生産することができますか?ここで

は私のコードは[によるデータフレームの/のXTSのinconsisty名のコメントを更新]である:

# creates a dataframe with dates and currency 
mydf3 <- data.frame(date = c("2013-12-10", "2015-04-01", 
"2016-01-03"), plus = c(4, 3, 2), minus = c(-1, -2, -4)) 
# transforms the column date to date-format 
mydf3 = transform(mydf3,date=as.Date(as.character(date),format='%Y-%m-%d')) 
# creates the xts, based on the dataframe mydf3 
myxts3 <- xts(mydf3, order.by = mydf3$date) 
# removes the column date, since date is now stored as index in the xts 
myxts3$date <- NULL 
+0

んこのヘルプあなたは? 't = transform(mydf3、date2 = as.Date(mydf3 $ date、format = '%Y-%m-%d')); myxts3 < - xts(t、order.by = t $ date2) ' – nilsole

+0

あなたの変数名と矛盾しています。 'myxts3 <-xts(t [、-1]、order.by = t $ date)'を試してください。 – wici

答えて

2

あなたはXTSオブジェクトにデータを保存する基礎となるデータ構造は、R行列であることを認識する必要がありますオブジェクトは、1つのRタイプ(例えば、すべての数字またはすべての文字)でなければなりません。タイムスタンプは、別々のベクトル(この場合は日付列)として保存されます。これは、データを時間別に索引付け/サブセット化するために使用されます。

date列は、数値の代わりに(xtsオブジェクトの)文字型行列にデータの行列を変換することを強制しています。それはそれは、マトリックス中に含まれている場合dateクラスは文字に変換しているようです:

> as.matrix(mydf3) 
    date   plus minus 
[1,] "2013-12-10" "4" "-1" 
[2,] "2015-04-01" "3" "-2" 
[3,] "2016-01-03" "2" "-4" 

あなたは(xtsx引数に)XTSに変換しているデータ内の非数値データを持っているときはいつでも、この種の問題が発生します。

次のようにあなたの問題は、(WICIはコメントで示されている)解決することができます

myxts3 <- xts(x= mydf3[, c("plus", "minus")], order.by = mydf3[, "date"]) 

> coredata(myxts3) 
plus minus 
[1,] 4 -1 
[2,] 3 -2 
[3,] 2 -4 
> class(coredata(myxts3)) 
[1] "matrix" 
+0

ありがとう、それは今動作します。私はスタートポイントとしてデータフレームを使いました、そして、私は数字と文字を混ぜないために行列をスタートポイントとして使うべきだったようです。これがうまくいくと、動物園でいくつかのテストを行いました。私は文字と数字の両方のデータを必要とします(実際には日付がインデックスされているように '最後'などの関数を使用する可能性があります)。 – Toolbox

関連する問題