名义变量我有类似这样的一个数据集:子集R中
x <- sample(c("A", "B", "C", "D"), 1000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05))
y <- sample(1:40, 1000, replace=TRUE)
d <- data.frame(x,y)
str(d)
'data.frame': 1000 obs. of 2 variables:
$ x: Factor w/4 levels "A","B","C","D": 1 3 3 2 3 3 3 3 4 3 ...
$ y: int 28 35 14 4 34 36 30 35 26 9 ...
table(d$x)
A B C D
115 204 637 44
所以在我的真实数据集,我有数千个这些类别(A,B,C,d)。
我的真实数据集的str()
str(realdata)
data.frame': 346340 obs. of 91 variables:
$ author : Factor w/ 42590 levels "-jon-","--LZR--",..: 1962 3434 1241 7666 6235 2391 1196 2779 1881 339 ...
$ created_utc : Factor w/ 343708 levels "2015-05-01 02:00:41",..: 14815 23163 2281 3569 5922 7211 15783 5512 13485 8591 ...
$ group : Factor w/ 5 levels "xyz","abc","bnm",..: 2 2 2 2 2 2 2 2 2 2 ...
....
现在我想子集数据,所以我只有那些$作家(在d
数据帧或$x
)在我的新数据框中有更多的行总共超过100个条目。
我试过如下:
dnew <- subset(realdata, table(realdata$author) > 100)
它给了我一个结果,但它似乎被纳入作者的不是所有的条目。虽然它应该是更多,我只得到完整数据集的行的1.3%。我手工检查(用Excel),它应该比这更多(约30%)。手动分析显示,1.2%的$作者占30%的参赛作品。所以看起来他只给了我一行有超过100个条目的$作者,但不是他所有的条目。
你知道一个方法来解决这个问题吗?
谢谢,这工作! –
@akrun我不知道你已经添加了,对于我的答案,我使用了两个链接的组合,我试了一下,然后发布,这里是http://stackoverflow.com/questions/24835233/subset-based-on-频率级 http://stackoverflow.com/questions/1195826/drop-factor-levels-in-a-subsetted-data-frame 你的答案为基地R也奏效我也检查过,水平仍然坚持数据,所以我在第二个链接之后放弃了它们。 谢谢。 –