web-dev-qa-db-ja.com

日付と数値を含むcsvを読み取る

Rでcsvファイルをインポートすると問題が発生します。

インポートする行の例:

2010-07-27;91
2010-07-26;93
2010-07-23;88

私はステートメントを使用します:

data <- read.csv2(file="...", sep=";", dec=".", header=FALSE)

このデータを、cbindを使用した統計分析によって作成された他のデータと集計しようとすると、日付は因子としてインポートされたため、整数として表示されます。

as.characterを使用して文字列として表示しようとすると、数値データも文字に変換されるため、統計的手順には使用できません。

14
keanu

colClasses引数を使用:

data <- read.csv2(file="...", sep=";", dec=".", header=FALSE,
     colClasses=c("Date",NA))

NAは「デフォルトとして続行」を意味します

インポート後、factorDateに変換できます

data[[1]] <- as.Date(data[[1]])
25
Marek

おそらく、文字値を意味のある時間値に変換したいでしょう。その場合、POSIXt時間オブジェクトが適切な選択です。

あなたのデータファイルを考えると、私は次のようなことをします。

data <- read.table(file="...", sep = ";", as.is = TRUE)
data[,1] <- strptime(data[,1], "%Y-%m-%d")

詳細については、ヘルプでstrptimeを参照してください。

注:ファイルのすべてのプロパティを指定する場合は、read.tableを使用します。他のすべてのread.xxxバージョンの唯一の目的は、デフォルトが設定されているため、式を単純化することです。ここでは、デフォルトでsep = ';'になっているため、read.csv2を使用しました。したがって、再度指定しないでください。コマンドが存在する理由はそれだけです。個人的には、すべてのバリアントの名前/デフォルトを思い出せないため、read.tableのみを使用しています。あなたの場合、それはあなたのheaderとdecのデフォルトを満たすので、最も簡単な呼び出しでもあります。

9
John

追加 as.is=TRUEからread.csv呼び出し。

7
mbq