2016-06-14 18 views
1

我的數據集testdata有2個變量命名PWGTPAGEP變量名稱越來越受損,我該如何預防或修復?

的數據是在.csv文件。

當我這樣做:

> head(testdata) 

的變量顯示爲

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

所以,出於某種原因,R是閱讀PWGTPï..PWGTP。沒什麼大不了的。

然而,當我使用一些功能來引用變量ï..PWGTP,我得到的消息:

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

同樣,當我使用一些功能來引用變量PWGTP,我得到的消息:

Error: id variables not found in data: PWGTP

2個問題:

  1. 有什麼我應該做的源文件,以防止改變變量名PWGTP

  2. ï..PWGTP重命名爲其他內容應該是微不足道的 - 但R無法找到名爲這樣的變量。你對如何修復變量名的想法?

+1

如果您知道您正在閱讀的列數和名稱順序,您可以使用'names(testdata)< - c(「PWGTP」,「AGEP」,...)' –

+1

在我看來,像一個可能的編碼問題......您的輸入文件是否爲帶有BOM的UTF-8? –

+0

@DominicComtois它可能是'.csv'編碼問題。我有一個更大的數據集,變量名顯示正常。我通過複製和粘貼較大數據集的前幾百行(和標題行)來創建'testdata'。在這個過程中出現了問題。然而,在文本編輯器或Excel中檢查'testdata'看起來很正常。所以我很想找到解決辦法,以防將來發生這種情況。 –

回答

1

這是BOM(字節順序標記)UTF-8問題。使用read.tableread.csv

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

    1. 將文件保存爲UTF-8無BOM /簽名 - 或:

      爲了防止這種情況發生,2個選項

      示例:

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

  • 0

    這可能是文件中的列名可能是1 PWGTP iewith數量(或別的東西)之間的空間,並且這導致..而R.閱讀,以防止這將是一個方式字符在read.csv/read.table

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

    使用check.names = FALSE但是,最好不要有一個名稱以數字或有空格之間。

    因此,假設,如果OP讀取數據使用默認選項與check.names = TRUE IE瀏覽器,我們可以用sub更改列名

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

    舉個例子

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

    謝謝。我可以通過執行'names(testdata)[1] < - 「PWGTP」' –

    +0

    @ user1883050來修復它。如果有多個列,那麼您可能需要'sub'。如果有效,請考慮通過點擊投票旁邊的勾號來接受解決方案。 – akrun