2013-11-14 87 views
0

我有一個變量(x),包含4個級別 - 「從不」,「每月1-2次」,「每週1-3次「和」每天「。當我嘗試使用R中的因素 - 當我設置水平時,一個因子被重新編碼爲NA

x <- factor (x, levels=c ("Never", "1-2 times a month", "1-3 times a week", "Everyday")) 

由於某種原因,重新編碼「天天」,以NA和出現爲0的時候我計算訂購水平。我試圖把它作爲第一或第二級別,並且它做同樣的事情。當我試圖製作虛擬數據時,它運行良好,所以我不能舉一個例子。我用Likert變量完全相同的代碼,它工作正常。

+0

當這發生在我身上時,幾乎總是因爲我拼寫錯誤。 – joran

+0

爲什麼你不能舉例? 嘗試'獨特(x)',是否有與級別相同的名稱 – Ananta

+1

我並不是說你有拼寫錯誤,但其中一些可能更棘手,如前導和尾隨空格以及單詞之間的額外空格。 – Henrik

回答

1

的問題是在尾隨空間原始數據文件。標籤是「每天」,而不是「每天」。使用獨特的(x)我可以看到問題出在哪裏。當我將它轉換爲字符時,我只能看到問題,運行unique(x)函數。

+0

同時檢查'read.table'中的'strip.white'參數。 – Henrik

2

正如評論者指出的,這可能是因爲某處出現拼寫錯誤。我們便利,能徹底清除這種錯誤,通過重新排序數字因子的水平:

例如,如果你的水平是相反的,你可以寫:

x <- factor(x, levels=levels(x)[c(4,3,2,1)]) 
+0

...或者'unique'如果'x'是一個字符向量。儘管檢查原始變量中的唯一值以確保您沒有錯誤的拼寫錯誤也是一個好主意。 – joran

+0

@joran,'unique'似乎也適用於整數/數字/邏輯向量。 – Arun

+0

對,我從問題中假設用戶已經有一個因素。 –