R中的“子集”没有按照我想要的方式进行子集[重复]
Posted
技术标签:
【中文标题】R中的“子集”没有按照我想要的方式进行子集[重复]【英文标题】:"Subset" in R does not subset the way I want it to [duplicate] 【发布时间】:2012-11-12 14:46:42 【问题描述】:可能重复:dropping factor levels in a subsetted data frame in R
我对这里的 R 有点失望,如果有人能帮我解决以下问题,那就太好了:我试图从我的数据集中提取一个子集,但它不能正常工作。
细节: 我有一个包含单词和与每个单词相关的不同功能的电子表格 例如word文章长度... ... 现在我正在尝试查看单个单词,例如拉出单词是“hairbrush”的所有实例。为此,我尝试了:
hairbrush=subset(dataset, word=="hairbrush")
当我使用fix
或head
查看它时,这似乎工作正常并为我提供了正确的数据集。但是,一旦我尝试做xtabs
或任何类型的计算之类的事情,我就不会走得太远,因为所有其他词仍然“存在”并弄乱了我的统计数据。例如。当我做levels
时,它给了我“发刷”,还有其他 200 个字。与这些“隐藏词”有关的所有数据都是NA
,但它仍然会弄乱我的统计数据。
这是subset
的惯常行为吗?还是我做错了什么?还是这是错误的做法?
哦,在 Google 上的一些类似问题中,人们总是要求输出 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 ...
【问题讨论】:
【参考方案1】:您需要在子集后使用droplevels
来清除未使用的级别。
【讨论】:
非常感谢本,成功了!不敢相信这不在我的教科书中......【参考方案2】:subset
正在按预期工作。您遇到的问题是由于word
是factor
。当您对data.frame
进行子集化时,subset
不会重新定义您的变量,因此word
会继续携带作为原始数据集一部分的所有级别信息。尝试使用 droplevels
从您的 data.frame
中删除所有未使用的级别。
【讨论】:
以上是关于R中的“子集”没有按照我想要的方式进行子集[重复]的主要内容,如果未能解决你的问题,请参考以下文章