次のような14列のcsvファイルをロードしようとしています。
StartDate, var1, var2, var3, ..., var14
このコマンドを発行すると:
systems <- read.table("http://getfile.pl?test.csv", header = TRUE, sep = ",")
エラーメッセージが表示されます。
row.namesの重複は許可されていません
最初の列名が問題を引き起こしているように思えます。ファイルを手動でダウンロードし、StartDate
名をファイルから削除すると、Rはファイルを正常に読み取り、最初の列名をX
に置き換えます。誰かが何が起こっているのか教えてもらえますか?ファイルは(カンマ区切り)csvファイルです。
次に、read.table notにrow.names
を使用するよう指示します。
systems <- read.table("http://getfile.pl?test.csv",
header=TRUE, sep=",", row.names=NULL)
そして今、あなたの行は単に番号が付けられます。
また、read.csv
とread.table
引数を既に設定しているsep=','
のラッパーであるheader=TRUE
も見てください。
systems <- read.csv("http://getfile.pl?test.csv", row.names=NULL)
この関連する質問 は、問題を説明する?read.table
ドキュメントの一部を示しています。
ヘッダーがあり、最初の行に含まれるフィールドの数が列の数よりも1つ少ない場合、入力の最初の列が行名に使用されます。それ以外の場合、row.namesが欠落している場合、行には番号が付けられます。
ヘッダー行には、ファイルの残りの部分よりも1列少ない可能性が高いため、read.table
は、最初の列が(重複する値を含むことができる)列ではなくrow.names(すべて一意である必要がある)であると想定します。これを修正するには、次の2つのソリューションのいずれかを使用します。
\t
または,
)を追加するか、選択は、データの構造によって異なります。
例:
ここでは、区切り文字が一致しないため、ヘッダー行はデータより1列少ないと解釈されます。
v1,v2,v3 # 3 items!!
a1,a2,a3, # 4 items
b1,b2,b3, # 4 items
これはデフォルトでどのように解釈されるかです:
v1,v2,v3 # 3 items!!
a1,a2,a3, # 4 items
b1,b2,b3, # 4 items
最初の列(ヘッダーなし)の値は、row.namesとして解釈されます:a1
およびb1
。この列に重複が含まれている場合(完全に可能)、duplicate 'row.names' are not allowed
エラーが発生します。
row.names = FALSE
を設定した場合、シフトは発生しませんが、区切り文字が一致しないため、ヘッダーとデータのアイテム数が一致しません。
ソリューション1ヘッダーに末尾の区切り文字を追加します。
v1,v2,v3, # 4 items!!
a1,a2,a3, # 4 items
b1,b2,b3, # 4 items
ソリューション2ヘッダー以外の行から余分な末尾の区切り文字を削除します。
v1,v2,v3 # 3 items
a1,a2,a3 # 3 items!!
b1,b2,b3 # 3 items!!
CSVファイルを開くときにこのエラーが発生し、フィールドの1つにコンマが埋め込まれていました。フィールドの周りに引用符があり、その中にquote = ""を含むread.tableをカットアンドペーストしました。 quote = ""を取り出すと、read.tableのデフォルトの動作が引き継いで問題を解決しました。だから私はこれから行きました:
systems <- read.table("http://getfile.pl?test.csv", header=TRUE, sep=",", quote="")
これに:
systems <- read.table("http://getfile.pl?test.csv", header=TRUE, sep=",")
このエラーの別の考えられる理由は、行全体が複製されていることです。その場合は、重複する行を削除することで問題を解決します。
私の場合、すべての行の終わりにコンマがありました。働いたものを取り除くことによって
問題は複数の理由から発生する可能性があるようです。同じエラーが発生したときに、次の2つの手順が機能しました。
ここでの答え( https://stackoverflow.com/a/22408965/2236315 )@adrianoeschが役立つはずです(たとえば、「コメント(列名のシフト、データのコピー)、それは素晴らしいことです。」と「...データのコピーが必要です」が@Frankによって提案されました)。
一部のテキストエディタで開くと、ヘッダーフィールドの数がヘッダー行の下の列の数より少ないことがわかります。私の場合、データセットの最後のヘッダーフィールドの最後に「、」がありませんでした。