2012-02-21 18 views
15

私はRで作業していて、最初の列に日付と時刻のあるcsvを読み込んでいます。 このCSVファイルを最初にRにインポートしてから、それをzoo obectに変換します。日付と時刻でcsvを読む

私はR

のコード
EURUSD <- as.xts(read.zoo("myfile.csv",sep=",",tz="",header=T)) 

私のcsvファイル形式のデータが含まれている使用しています:私はRIにしてデータをインポートするには、上記のコマンドを実行すると

Date,Open,Low,High,Close 
2006-01-02 10:01:00,2822.9,2825.45,2822.1,2824.9 
2006-01-02 10:02:00,2825,2825.9,2824,2824.95 
2006-01-02 10:03:00,2824.55,2826.45,2824,2826.45 
2006-01-02 10:04:00,2826.45,2826.45,2824.9,2825.5 
2006-01-02 10:05:00,2825.15,2825.5,2824,2824.85 
2006-01-02 10:06:00,2824.7,2825.5,2823.7,2823.8 
2006-01-02 10:07:00,2823.95,2824.45,2823.55,2824 
2006-01-02 10:08:00,2824,2824.85,2823.5,2824.85 
2006-01-02 10:09:00,2824.25,2825.45,2824,2825.45 
2006-01-02 10:10:00,2825.2,2827,2825,2827 

をfolowwwingを取得エラー:

Error in as.POSIXlt.character(x, tz, ...) : 
    character string is not in a standard unambiguous format 

問題を解決する方法をすべて見つけようとしました。私は網を介して非常に多くのブログを読んだが、方法のどれも私のために働く。

誰かが私を助けてくれることを願っています。

+1

あなたの日付の列には何かがあります。たぶん空白の空白、 " - "、 "、"、 "n.a."またはそのようなものです。 –

+0

あなたの 'sep'はカンマですか?代わりにタブのように表示されるCSV形式の例ですか? –

+0

カンマ区切りです。私はcsvファイルをメモ帳で開き、カンマで区切って表示しています。 – user395882

答えて

5

エラーは、Rが日付の列がどの形式であるかを認識していないためです(日付/月/年/月/日/年など)。

あなたは(あなたが使用できる指定子のため?strptimeを参照)、それはread.zooformat引数を使用しているどのような形式Rを伝えることができます。例えば

、それは日/月/年の時間(24時間)だった場合:分、あなたができる:

EURUSD <- as.xts(read.zoo(file_name, 
          sep=',', 
          tz='', 
          header=T, 
          format='%d/%m/%Y %H:%M:%S')) # see the 'format' argument? 

(注意 - あなたの質問にCSVデータのスニペットは、あなたがISNを示しました。カンマ区切り)。

+0

私はread.zoo( "C:/Users/ParamJeet/Desktop/test/eurusd.csv"、sep = "、"、tz = ""、format = "私はエラーを返します:read.zoo( "C:/Users/ParamJeet/Desktop/test/eurusd.csv"、sep =%m-%d% "、"、:, インデックスにはデータ行に13428個の不正なエントリがあります:323559 323560 323561 323562 323563 – user395882

+0

次にこれらのrあなたのおかげでcsv - 私の推測では彼らは異なったフォーマットを持っています。 –

+0

メモ帳を開くと、日付、オープン、ロー、ハイ、クローズのように見えます。 2006-01-02 10:01:00,2822.9,2825.45,2822.1,2824.9 Excelのデータで開くと、日付が\tになります。\t Low閉じる 2006年1月2日10時01分\t 2822.9 \t 2825.45 \t 2822.1 \t 2824.9 2006年1月2日10時02分 2825.9 2824.95 これが問題の原因でこの違いを考える\tハイ\t。 – user395882

8

これは古い投稿のようですが、私は同様の非常にイライラするプロセスを経てRに時系列CSVデータをロードしようとしていたので私の経験を共有したいと思います。 上記の問題は、次の日付と時刻を%m/%d/%Y %H:%Mに変更すると、基本的には秒が落ちます。この形式のファイルを読み込み、2番目の解像度データを持っている場合、類似した複数の日付時刻の組み合わせが得られます。したがって、次のエラーメッセージが表示されるため、秒を無視する形式を単純に使用することはできません。 "文字列は標準的な明白な形式ではありません"

解決策は、Excelに戻り、日付時刻の列の形式を%m/%d/%Y %H:%M:%Sに変更します。最も近い日付時刻のデフォルト形式を希望の形式(この場合は%m/%d/%Y %H:%M)で選択し、最後に:ssを手動で追加します。ファイルをcsvファイルとして保存し、次のコマンドを使用して読み取ります。

Data<-read.zoo("file.csv", tz="", header=TRUE,format='%m/%d/%Y %H:%M:%S') 

これは私のために働いたと私は約900K行を持つファイルを読み込む。

0

日付列が文字のようなものであるとき、as.xtcを使用せずに、ファイルを読み込みます。そしてPOSIXltクラスに日付を変換この機能を持つ:

library("chron") 
DateConvert<-function(x){ 
    dt<-strsplit(x,split = "T") 
    dt<-unlist(dt) 
    d1<-dt[1:length(dt) %% 2==1 ] 
    d2<-dt[1:length(dt) %% 2==0 ] 
    a<-as.POSIXlt(chron(dates.=d1, times.=d2, format = c(dates = "y-m-d", times = "h:m:s"))) 
    return(a) 
} 

DateConvert('Your column') 

を入力して、データas.xtsを使用してください。