web-dev-qa-db-ja.com

read.csv row.names

列指向のcsvファイルをデータフレームとしてRに読み込もうとしています。

ファイルの1行目は次のようになります。

_sDATE, sTIME,iGPS_ALT, ..._

そして、追加の各行は測定値です。

_4/10/2011,2:15,78, ..._

これをRに読み込もうとすると

d = read.csv('filename')

Rはデータの最初の列が行名であると見なし、すべての測定が同じ日に行われたため、最初の列の値は変更されないため、row.namesの重複エラーが発生します。

_row.names = NULL_を_read.csv_呼び出しに入れると、sDATE列に対応する余分な列_d$row.names_が取得され、すべてが1列下に「シフト」されるため、_d$sDATE_には_2:15_が含まれ、必要に応じて_4/10/2011_は含まれません。

CsvをExcelで開き、何もせずに保存すると、すべてがクールになります。私はこれらの何百も処理しなければならないので、Excelに手動で保存することは私が望んでいることではありません。プログラムで何かがある場合、これらのcsvをpythonまたはそれ以外で前処理するために私ができることがあれば、それは素晴らしいことです。

14
nimish

read.csvヘッダーの値が他の行よりも少ない場合にのみ、行名があると想定します。したがって、どういうわけか、列名が欠落しているか、不要な余分な列があります。

29
wkmor1

おそらく追加の列があります。
しかし、それはおそらく、元のスプレッドシートのデータの右側にある、実際には空である、迷いフォーマットされたセル(またはセルの列)から発生します。
重要な点は次のとおりです。Excelは、シートでフォーマットされている空のセルの空のフィールドをCSVファイルに保存します。おそらくこの問題が発生する理由は次のとおりです。ExcelでCSVファイルを開いて再保存すると、Rの問題が解消されるためです。
状況:CSVファイルをExcelにプルバックすると、データの右側または下にある空のセルは無視されます(CSVファイルにはフォーマットがないため)。

結論:統計パッケージで使用するために、フォーマットされたスプレッドシートをCSVファイルとして保存するように注意してください。浮遊フォーマットとは、CSVの浮遊フィールドを意味します。

4
pleiby

私は同じ問題に直面しました。以下のようにheader=TRUEを追加することで解決しました

tempdata <- read.csv("C:\\File.csv",header=TRUE)

日付列である最初の列が正しく配置されました。

0
Anant Gupta

考えられる理由の1つは、ヘッダー行の後の行末に余分なコンマがあることです。 Excelは警告なしでそれらを無視し、保存中に削除します。

少なくとも私はそうだった

0
svural