2012-01-13 8 views
47

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

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

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

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

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

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

+1

リンク(http://getfile.pl?test.csv)は動作していないようです。おそらく、ファイルの最初の数行をコピーして質問に貼り付けるか、または作業リンクを提供してください。 – nograpes

+0

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

+0

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

答えて

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を意味しましたか? –

+9

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

+0

@Tyler:yup、今修正しました。ありがとう! –

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

    私のファイルは正しいですが、魔法は何ですか? – Marichyasana

    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

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

    関連する問題