は 'row.names' のRで許容される誤差は、私はこのような14個の列があり、csvファイルをロードしようとしています


47

プログラミングされていない複製:

開始日、VAR1、VAR2、VAR3、...、 var14

私は、このコマンドを発行します。

systems <- read.table("http://getfile.pl?test.csv", header=TRUE, sep=",") 

私は、 "重複row.namesは、エラーメッセージは許可されていません" を取得。

最初の列名が問題を引き起こしているようです。手動でファイルをダウンロードしてファイルからStartDateという名前を削除すると、Rはファイルを正常に読み取り、最初の列名をXに置き換えます。誰かが何が起こっているか教えてください。このファイルは、カンマ区切りのcsvファイルです。

  0

これは単なる例です。リンクは内部にあるので、あなたはそれにアクセスすることはできません。ファイル形式はdate、var1、var2、var3、var4、var5のようになり、データが入力されます。私はファイルを開くことができます、それは正確です 13 1月. 122012-01-13 17:04:22

  0

システム< - read.table( "http://getfile.pl?test.csv"、ヘッダー= FALSE、SEP = "、")、私はファイルを取得するようだが、知っている私は別の行を扱わなければならない。私はシステムの内容を印刷する場合。これは見た目です:V1 V2 V3 V4 V5 StartDate、Server、uptime、load、memory 13 1月. 122012-01-13 17:11:18

  0

この質問は、(1)タイトルまたは(2)以下の回答とは関係がありません。 @minitechは最後の編集の作家としてあなたにpingして、質問が投稿されたわずか4時間後に...多分あなたは20kの意見を集めたこの質問を救済する方法を知っています。 07 1月. 152015-01-07 19:54:39

+1

@フランク:おっと、ありがとう!ロールバック。 07 1月. 152015-01-07 21:04:52

71

その後row.namesを使用しない read.tableをを伝える:

systems <- read.table("http://getfile.pl?test.csv", 
         header=TRUE, sep=",", row.names=NULL) 

、今、あなたの行は単純に番号が付けられます。

はまた、あなたの呼び出しが

systems <- read.csv("http://getfile.pl?test.csv", row.names=NULL) 
  0

最終コードのチャンクでread.tcsではなくread.csvを意味しましたか? 13 1月. 122012-01-13 17:16:04

+9

私はそれを前に試して、それは動作しませんでした。最初の列は現在 "row.names"と呼ばれ、列名はさらに1セル移動しました 13 1月. 122012-01-13 17:17:45

  0

@Tyler:yup、今修正しました。ありがとう! 13 1月. 122012-01-13 17:31:01

  0

@Mike:それはあなたが不平を言うエラーを避けるので、_それのポイントです。 source.namesとしてソースデータを修正するか、後でデータを調整してください。最初の列を除くすべての列を新しいdata.frameに簡単にコピーできます。 13 1月. 122012-01-13 17:32:16

+3

"あなたの行は単に番号が付けられます。"あなたのコメントがあなたが知っていることを示しているように、列名も駄目です。あなたのコメントに記載されている厄介な回避策(列名をシフトし、データをコピーする)を必要としない解決策が分かっているなら、それは素晴らしいことです。 (残念ながら、 "あなたのソースデータを修正する"は私のケースでは不十分です - OPの問題はなく、文書化された動作に従いますhttp://stackoverflow.com/a/15285380/1191259。ある日再現可能な例になります。 07 1月. 152015-01-07 19:50:45

+3

OPはエラーを回避する方法をすでに知っていました。実際には、データがコピーされることを余儀なくされているので、あなたの答えは以前のやり方より劣っています。 (私は誤って列名を混乱させると書いていました) 07 1月. 152015-01-07 22:11:13

  0

この問題が発生する可能性のある状況を追加して解決策を提案しました。 http://stackoverflow.com/questions/13239639/duplicate-row-names-error-reading-table-row-names-null-shifts-columns/36658971#36658971 16 4月. 162016-04-16 00:52:53


25

this related postを参照してくださいに簡略化されるように、既にsep=','header=TRUE引数を設定しますread.tableのラッパーであるread.csvを見てください。

ヘッダー行は、残りのファイルよりも1列少ない可能性があります。もし は、例えば

データ内の任意の末尾の区切り文字を削除するソースファイルにあなたのヘッダー行の末尾に区切り文字を追加すること、または、

    1. によってこの問題を解決することができ、、、
      B、B、B、

      例えばヘッダに後続の区切り文字を追加

      V1、V2、V3
      :ヘッダが1つの少ない列を有する

      V1、V2、V3、
      、、、
      B、B、B、


  • 0

    それが問題です1つ以上の理由から生じ得る。次の2つのステップは、同じエラーが発生したときに働いた。 1.ファイルをMS-DOS CSV形式で保存しました。 (以前はcsvとして保存されていましたが、スターター2010より優れています)。 notepad ++でcsvを開いた。昏睡の矛盾はなかった(上記の@Brianのように一貫性がある)。
    2.私は引数sep = "、"を使用していなかったことに気付きました。私はそれを使用し、それは働いた(それはデフォルトの引数ですが!)


    0

    私は上記の議論のコメントに十分な点がないのでこれを投稿できませんでしたが、私はこのディスカッションを読むのが難しく、実装が難しいと感じました。しかし、@adrianoeschの回答(https://stackoverflow.com/a/22408965/2236315)が役立つはずです(例えば、「あなたのコメントに厄介な回避策を必要としない解決策がわかっていれば(列名をシフトし、データをコピーする)、それは素晴らしいことです「@Frankによって提案されたデータをコピーすることを要求する」など)。

    一部のテキストエディタで開くと、ヘッダーフィールドの数がヘッダー行の下にある列の数よりも少ないことがわかります。私の場合、データセットには最後のヘッダーフィールドの最後に "、"がありませんでした。


    0

    このエラーのもう1つの原因として、行全体が重複している可能性があります。そのような場合は、重複行を削除することで問題を解決します。


    0

    Excelで開いて保存することができます。 CSVを再フォーマットして動作させます。

      0

    私のファイルは正しいですが、魔法は何ですか? 26 10月. 172017-10-26 09:58:40


    0

    同様の問題もあります。以下の関数を使用して、係数変数(名目/序数タイプ)を含むデータフレーム内で、変数ごとにこれらのすべての補助表をデータフレームに変換することによって、最初の列に重複した名前が含まれるデータフレームが生成されます。

    これらの名前は、維持するために要素に変換することはできません。どのようにこれが起こることができますか?これはその問題の解決策かもしれません! :)

    tblFun <- function(x){ 
        tbl <- table(x) 
        res <- cbind(tbl,round(prop.table(tbl)*100,2)) 
        colnames(res) <- c('Count','Percentage') 
        res 
    } 
    
    do.call(rbind,lapply(df,tblFun)) 
    

    例DF:心から

    Agree   413  77.34 
    Disagree   27  5.06 
    Dont know  16  3.00 
    Agree   505  94.57 
    Disagree   13  2.43 
    Dont know   0  0.00 
    

    、 エリアス "Estatistics" Tsolis


    0

    かかわらずread.csvまたはread.tableを、読みながら= NULL row.namesを行いますファイル。それは動作するはずです。それは私のために同じように働いた。


    0

    CSVファイルを開くときにこのエラーが発生し、そのうちの1つのフィールドにカンマが埋め込まれていました。フィールドは引用符で囲まれていて、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=",") 
    

    0

    私の場合は、すべての行の末尾にカンマました。それを削除することによって