子集R中观察量的因子

时间:2016-07-25 07:56:51

标签: r

所以我有这个数据集

str(pcol)
'data.frame':   3130486 obs. of  20 variables:
$ body     : Factor w/ 1623190 levels "","' i need to... '",..: 76837  ...
$ author   : Factor w/ 18164 levels "--Kai--","--sunshine--",..: 11455 6643 8117 832 ...
$ ups      : int  2 7 1 1 1 1 2 4 2 1 ...
....

制作表格显示以下内容:

table(pcol$author):
AuthornameX   AuthornameY   AuthornameZ ...
148           87            102

 'table' int [1:18164(1d)] 129 5 152 67 18 25 58 319 44 204 ...
- attr(*, "dimnames")=List of 1
..$ : chr [1:18164] "--Kai--" "--sunshine--" "-0---0-" "-73-" ...

所以现在我想创建一个新数据集,只有作者在数据集中的次数超过100次。

我尝试了以下内容:

x <- subset(pcol, length(pcol$author) > 100 )
'table' int [1:2634(1d)] 129 152 319 204 157 177 198 106 144 437 ...
 attr(*, "dimnames")=List of 1
..$ : chr [1:2634] "--Kai--" "-0---0-" "-Lolrax-" "-PTM-" ...

这种方式我限制了数量超过100的作者。但现在我遇到了如何从原始数据集中减去这些作者的问题。

我试过了:

> y <- subset(pcol, pcol$authors == x)

但是这留下了一个空白的数据框,其中有0个观察结果。

那么:我如何将原始数据集更改为新数据集,仅限于出现超过100次的作者?

My question is similar to this one, so potentially a duplicate.虽然问题已得到解答,但我无法将解决方案转移到我的问题上。这就是我提出问题的原因。

Here is a 10.000 rows sample of my data set

2 个答案:

答案 0 :(得分:2)

使用data.table包获取

require(data.table)
setDT(pcol)

找出发生次数超过100次的作者

author_sel <- pcol[, .N, by = .(author)][N > 100]
pcol[author %in% author_sel$author]

答案 1 :(得分:1)

基础解决方案可能

subset(pcol, author %in% names(which(table(pcol$author)>100)))

也许你应该考虑学习dplyr。 dplyr解决方案更易于阅读,并且可以更快地在您的计算机上运行。