【发布时间】:2016-07-25 07:56:50
【问题描述】:
所以我有这个数据集
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. 虽然问题已得到解答,但我无法将解决方案转移到我的问题上。这就是我提出问题的原因。
【问题讨论】:
-
聚合并添加显示每个作者的计数的新列,然后在该列上使用子集。同时添加reproducible example。
-
试试
y <- subset(pcol, pcol$authors %in% x)。 -
或
library(dplyr) ; pcol %>% group_by(author) %>% filter(n() > 100)
标签: r