0

可能重复:
在 R 中的子集数据框中删除因子级别

我在这里对 R 感到有些沮丧,如果有人可以帮助我解决以下问题,那就太好了:我正在尝试从我的数据集中提取一个子集,但它无法正常工作。

细节:我有一个电子表格,其中包含与每个单词相关的单词和不同特征,例如单词文章长度……现在我正在尝试查看单个单词,例如拉出单词为“hairbrush”的所有实例。为此,我尝试了:

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

这似乎工作正常,当我用fixor查看它时,它给了我正确的数据集head。但是,一旦我尝试进行诸如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

2 回答 2

4

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

于 2012-11-24T15:33:06.237 回答
3

subset正在按预期工作。word您遇到的问题是由于factor. 当您对 , 进行子集化时data.framesubset不会重新定义您的变量,因此会word继续携带作为原始数据集一部分的所有级别信息。尝试使用droplevels从您的data.frame.

于 2012-11-24T15:35:37.917 回答