R中的“子集”不按我想要的方式进行子集化

时间:2012-11-24 15:24:15

标签: r subset

  

可能重复:
  dropping factor levels in a subsetted data frame in R

我对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 ...

2 个答案:

答案 0 :(得分:4)

您需要在子集化后使用droplevels来清除未使用的级别。

答案 1 :(得分:3)

subset正在按计划运作。您遇到的问题是wordfactor。当您对data.frame进行分组时,subset不会重新定义您的变量,因此word会继续携带原始数据集中所有级别信息。尝试使用droplevelsdata.frame中删除所有未使用的级别。