2016-07-25 48 views
0

的因素所以我有这个数据集子集上观察量中的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

+0

总结并添加新列,显示每个作者的数量,然后在此列中使用的子集。另外添加[可重现的例子](http://stackoverflow.com/questions/5963269)。 – zx8754

+0

试试'y < - 子集(pcol,pcol $ authors%in%x)'。 – Alex

+1

或'library(dplyr); pcol%>%group_by(author)%>%filter(n()> 100)' – Sotos

回答

2

使用data.table包一个得到

require(data.table) 
setDT(pcol) 

查找作者有超过100次出现

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

谢谢!!!工作! –

1

底液可能是

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

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

+0

我添加了一个示例数据集。 我试过了你的命令行,但是唉,有不少作者的出场次数不到100次。也许样本数据集可以让您更好地了解我想知道的内容 –

+0

这是否解决了您的问题? – shayaa

+0

唉,它没有。我使用了stefan8888的建议。但无论如何,感谢您的帮助! –