2012-10-11 98 views
1

我與具有以下結構的數據集的工作...定義因子變量與未觀測到的水平

grades <- c("7A", "8B", "6C", "6B+") 

...但也有一些不可觀測當前水平不在我的數據集。但我不希望自動定義因素(所以在讀取我的數據時使用read.csv(...,stringsAsFactors = FALSE))。我想明確定義關卡的級別及其標籤,並將導入的字符串轉換爲有序因子,以便在沒有觀察到任何關卡的情況下,所有等級的關聯計數均爲零。

real.grades <- ordered(x = character(), 
         levels = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17),      
         labels = c("6A", "6A+", "6B", "6B+", "6C", "6C+", "7A", "7A+", "7B", "7B+", "7C", "7C+", "8A", "8A+", "8B", "8B+", "8C")) 

......但我在努力如何做到這一點?

感謝您的建議和指示,謝謝。

回答

2

我認爲這是你以後:

grades <- c("7A", "8B", "6C", "6B+") 

real.grades <- factor(grades, levels = c("6A", "6A+", "6B", "6B+", "6C", 
    "6C+", "7A", "7A+", "7B", "7B+", "7C", "7C+", "8A", "8A+", "8B", 
    "8B+", "8C")) 

產量:

> real.grades 
[1] 7A 8B 6C 6B+ 
Levels: 6A 6A+ 6B 6B+ 6C 6C+ 7A 7A+ 7B 7B+ 7C 7C+ 8A 8A+ 8B 8B+ 8C 

對於數字表示使用:

as.numeric(real.grades) 
+0

優秀,感謝泰勒,這確實是什麼我在之後,被'labels ='選項弄糊塗,並且認爲我需要明確地定義它們。 – slackline

+0

@ JoshO'Brien歡呼,我馬上試着讀泰勒的答案,但被告知我必須等5分鐘才能做到這一點。我現在已經等待並正確地標記爲正確(現在只需提高我的聲望,然後我就可以正確加入;-) – slackline