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")

当我使用fixhead 查看它时,这似乎工作正常并为我提供了正确的数据集。但是,一旦我尝试做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 正在按预期工作。您遇到的问题是由于wordfactor。当您对data.frame 进行子集化时,subset 不会重新定义您的变量,因此word 会继续携带作为原始数据集一部分的所有级别信息。尝试使用 droplevels 从您的 data.frame 中删除所有未使用的级别。

【讨论】:

以上是关于R中的“子集”没有按照我想要的方式进行子集[重复]的主要内容,如果未能解决你的问题,请参考以下文章

R中的子集回归[重复]

子集几个与R中的分类变量不同的[重复]

根据 R 中的文件名读取栅格子集

R - 子集 - 基于列值的 grepl 选择排除行 [重复]

R中的鬼因子水平[重复]

从R中的数据框中子集列[重复]