2016-06-14 2 views
1

私のデータはtestdataが2つのPWGTPという名前の変数とAGEP変数名が変更されていますが、どうすればこれを防ぐか修復できますか?

データが.csvファイルである持って設定してください。

は私が行うと:

> head(testdata) 

変数だから、何らかの理由で、Rはï..PWGTPとしてPWGTPを読んでいる

ï..PWGTP AGEP 
      23 55 
      26 56 
      24 45 
      22 51 
      25 54 
      23 35 

として表示されます。いいえ。私は、変数PWGTPを参照するために、いくつかの機能を使用する場合、私はメッセージを取得し、同様に

Error: id variables not found in data: ï..PWGTP

::私は、変数ï..PWGTPを参照するために、いくつかの機能を使用するしかし

、私はメッセージを取得する

Error: id variables not found in data: PWGTP

2質問:

  1. 変数名のマングリングを防ぐために、ソースファイルに何かすべきことはありますか?

  2. ï..PWGTPの名前を他の名前に変更するのは簡単ですが、Rはそのような名前の変数を見つけることができません。どのように変数名を修復しようとしていますか?

+1

あなたが読んでいるカラムの数と名前の順番を知っていれば 'names(testdata)< - c(" PWGTP "、" AGEP "、...)' –

+1

のように見えますあなたの入力ファイルはBOMのUTF-8でしょうか? –

+0

@DominicComtoisおそらく '.csv'エンコードの問題です。私はより大きいデータセットを持ち、変数名がうまく表示されます。大きなデータセットの最初の数百行(およびヘッダー行)をコピーして貼り付けて、「テストデータ」を作成しました。そのプロセス中に何か問題が発生しました。テキストエディタや「Excel」で 'testdata'を調べると、正常に見えます。だから私は、これが将来重大な状況で起こった場合に修正案を見つけることに興味がありました。 –

答えて

1

例として、列名

names(d1) <- sub(".*\\.+", "", names(d1)) 

を変更するsubを使用することができます、と仮定BOM(Byte Order Mark)UTF-8の問題です。read.tableまたはread.csv を使用した場合

  • 使用fileEncoding = "UTF-8-BOM"を - か -

    1. は、BOM /署名なしUTF-8としてファイルを保存:

      は、2つのオプションが起きてからこれを防ぐために、

      例:

      mydata <- read.table(file = "myfile.txt", fileEncoding = "UTF-8-BOM")

  • 0

    ファイル内の列名が数字(または何か他のもの)の間のスペースiewith 1 PWGTPことができることと、これを防ぐためにR.一つの方法を読みながら..につながる文字がなることも可能ですしかしread.csv/read.table

    d1 <- read.csv("yourfile.csv", header=TRUE, stringsAsFactors=FALSE, check.names=FALSE) 
    

    check.names = FALSEを使用するために、名前が数字で始まるか、間にスペースを持っていないことをお勧めします。

    OPは、データを読み込むのであれば、デフォルトのオプションがcheck.names = TRUEにすなわちで、我々はこれがある

    sub(".*\\.+", "", "ï..PWGTP") 
    #[1] "PWGTP" 
    
    +0

    ありがとう。 'names(testdata)[1] < - " PWGTP "' –

    +0

    @ user1883050複数の列がある場合、 'sub'が必要な場合があります。それが機能する場合は、投票の横のチェックマークをクリックして解決策を受け入れることを検討してください。 – akrun

    関連する問題