2

私はRが初めてで、使い始めたばかりです。現在、quantmod パッケージを試しています。

quantmod パッケージは、私がやりたいことのほとんどを行っているようですが、getSymbols() 関数を使用してデータを R にフェッチしたくありません。代わりに、ローカル ディスクに csv ファイルとして保存されている独自のデータを使用したい.

quantmod で使用するために、CSV ファイルからデータを丸呑みできるようにしたいと考えています。quantmodで使用する CSV ファイルを読み取る方法を示すこの記事にたどり着きましたが、少なくとも 2 つの理由で気に入りません。

  1. quantmod にロードする前に、新しい (再フォーマットされた) CSV ファイルをディスクに書き込みます。Rを使用して、メモリ内で必要な変更を行うことをお勧めします。

  2. CSV ファイルには列ヘッダーがあります。データに列ヘッダーがありません。代わりに、フィールドは所定の固定列位置にあります (Yahoo Finance データ テーブルで採用されている「標準」形式に一致します)。

getSymbols()関数によって返されるデータ型を解決できませんでした。データ フレームを返すことを期待していましたが、そのクラスを確認したところ、文字ベクトルとして識別されました。これは非常に驚くべきことでした (率直に言って、含まれているデータから barChart をプロットできるので、信じられません)。変数で):

yhoo <- getSymbols("YHOO",src="google")
class(yhoo)
[1] "character"
> yhoo
[1] "YHOO"

CSV ファイルからデータを読み取り、quantmod で使用する R オブジェクト (データ フレーム?) として返す小さな R 関数 (おそらく read.csv のラッパー) を作成する方法を誰かが示すことができれば幸いです。

私がやりたいことを説明する擬似コードを次に示します。

# in case I need some funcs here for creating data type returned by function
library(quantmod) 

loadCSVDataFile <- function(full_pathname){
    csvdata <- read.csv(full_pathname, header=FALSE,sep=",")
    dates <- csvdata[,1]
    op <- csvdata[,2]
    hi <- csvdata[,3]
    lo <- csvdata[,4]
    cl <- csvdata[,5]
    vol <- csvdata[,6]
    oi <- csvdata[,7]

    # Now combine columns into a data type that matches that returned by the
    # getSymbols() ....
    # return(dataset)
}

[[アップデート]]

これまでに与えられた答えを使用して、STLLがこれを機能させることができませんでした...:

> gbpusd <- as.xts(read.zoo('/path/to/gbpusd.csv', header=FALSE))
> class (gbpusd)
[1] "xts" "zoo"
> barChart(gbpusd)
Error in `[.xts`(x, xsubset) : subscript out of bounds

> gbpusd2 <- getSymbols.csv('gbpusd',,'/path/to/')
Error in missing(verbose) : 'missing' can only be used for arguments
> 
> gbpusd2 <- getSymbols.csv('gbpusd',.GlobalEnv,'/path/to/')
Error in missing(verbose) : 'missing' can only be used for arguments
> 
> 
> gbpusd2 <- getSymbols.csv('gbpusd','.GlobalEnv','/path/to/')
Error in missing(verbose) : 'missing' can only be used for arguments
> 
> gbpusd2 <- getSymbols.csv('gbpusd',env,'/path/to/')
Error in missing(verbose) : 'missing' can only be used for arguments

私は何を間違っていますか?

4

3 に答える 3

4

一般的なイディオムは次のとおりです。

yhoo = as.xts(read.zoo("yhoo.csv",header=T))

quantmod関数を使用する場合はgetSymbols()、csvファイルを使用するように指示できます。http://www.quantmod.com/documentation/getSymbols.csv.htmlIeを参照してください

getSymbols('yhoo',src='csv')

(小文字の規則に従いましたが、ファイル名では大文字と小文字が区別されることに注意してください。ディレクトリのデフォルトは現在のディレクトリであり、dirパラメータで明示的に指定できます。を参照してください?getSymbols.csv

于 2012-01-23T12:16:42.170 に答える
4

私はそれを機能させることができますが、セットアップに必要なパラメーターを決定する必要があります。

library(quantmod)

# create sample data
getSymbols("SPY")
write.zoo(SPY, file="SPY.csv", sep=",")

# set symbol lookup
setSymbolLookup(SPY=list(src="csv",format="%Y-%m-%d"))
# call getSymbols(.csv) with auto.assign=FALSE
spy <- getSymbols("SPY", auto.assign=FALSE)
barChart(spy)
于 2012-01-23T20:49:49.697 に答える
1

コードに ls() を含めると、変数を見落としていることがわかります。

yhoo <- getSymbols("YHOO", src = "google")
ls()
# [1] "yhoo" "YHOO"
class(yhoo)
# [1] "character"
class(YHOO)
# [1] "xts" "zoo"

getSymbols() は 2 つの変数を作成します: 文字ベクトル "yhoo" と "YHOO"は、 zooクラスを拡張するクラス拡張時系列 ( xts )のオブジェクトで、不規則な時系列データを格納します。

ドキュメントを表示するには、次を使用します。

?xts # or ?zoo

特に、xts のドキュメントでは行列から xts に変換するas.xts()関数について説明しています。そこから、 read.csvまたはread.tableを使用して独自の CSV ファイルを読み込み、xtsオブジェクトに変換するのは簡単です。

于 2012-01-23T12:02:05.737 に答える