2012-11-24 74 views
0

可能重複:
dropping factor levels in a subsetted data frame in R「子集」中的R I想要的方式並不子集

我越來越有R這裏有點沮喪,這將是巨大的,如果任何人都可以通過以下方式幫助我:我試圖從我的數據集中提取子集,但無法正常工作。

具體內容: 我有一個電子表格,其中包含文字和與每個詞 相關的不同特徵。詞條長度... ... 現在我正在試着查看單詞,例如拉出單詞爲「發刷」的所有實例。要做到這一點,我想:

hairbrush=subset(dataset, word=="hairbrush") 

這似乎很好地工作,並給了我正確的數據集時,我看它與fixhead。然而,只要我嘗試做xtabs或任何類型的計算,我就不會走得太遠,因爲所有其他單詞仍然「存在」並且弄亂了我的統計數據。例如。當我做levels,它給了我「發刷」,但也是所有其他200字。所有與這些「隱藏詞」有關的數據是NA,但它仍然混亂我的統計數據。

是這樣的subset平時的行爲?或者我做錯了什麼?或者這是錯誤的方法?

哦,在谷歌的一些類似的問題,人們總是問的str輸出,所以在這裏它是:

> str(hairbrush) 
'data.frame': 41 obs. of 10 variables: 
$ id  : Factor w/ 1352 levels "1-1-1-11-a.eaf",..: 210 240 267 295 320 351 378 403 427 452 ... 
$ speaker : num 24 25 26 28 29 30 32 33 34 35 ... 
$ loc  : Factor w/ 2 levels "nb","xx": 1 1 1 1 1 1 1 1 1 1 ... 
$ gilbertno: Factor w/ 27 levels "1","10","108",..: 1 1 1 1 1 1 1 1 1 1 ... 
$ tword : Factor w/ 65 levels "abaddream","afuneral",..: 4 4 4 4 4 4 4 4 4 4 ... 
$ word  : Factor w/ 228 levels "abbe","aepfel",..: 164 93 99 93 92 100 94 94 28 93 ... 
$ loan  : Factor w/ 5 levels "FILE","maybe",..: 4 3 5 3 5 5 3 3 3 3 ... 
$ article : Factor w/ 40 levels "a","das","dat",..: 34 34 33 33 34 34 34 34 13 34 ... 
$ gender : Factor w/ 13 levels "a","af","amn",..: 11 11 7 7 11 11 11 11 7 11 ... 
$ comment : Factor w/ 4 levels "0","die macht ja vorschlaege",..: 1 1 1 1 1 1 1 1 1 1 ... 

回答

4

您需要使用droplevels子集後清理未使用的水平。

+0

非常感謝,本來就是這樣的!不能相信這不在我的課本里... – patrick

3

subset是否按預期運行。您遇到的問題是由於wordfactor。當子集data.framesubset未重新定義你的變量,所以word繼續這一切的,這是原始數據集的一部分水平的信息來進行。嘗試使用droplevels刪除data.frame中的所有未使用的級別。