我对R感到有点沮丧,如果有人能帮我解决以下问题会很棒:我试图从我的数据集中提取一个子集,但它无法正常工作。
具体细节: 我有一个电子表格,其中包含与每个单词相关联的单词和不同功能 例如单词文章长度... ... 现在我试着看一下单个词,例如拉出所有单词都是“发刷”的实例。为此,我尝试了:
hairbrush=subset(dataset, word=="hairbrush")
这似乎工作正常,当我使用fix
或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 ...
答案 0 :(得分:4)
您需要在子集化后使用droplevels
来清除未使用的级别。
答案 1 :(得分:3)
subset
正在按计划运作。您遇到的问题是word
为factor
。当您对data.frame
进行分组时,subset
不会重新定义您的变量,因此word
会继续携带原始数据集中所有级别信息。尝试使用droplevels
从data.frame
中删除所有未使用的级别。