在R中分组并计算某些东西

时间:2018-02-22 16:08:55

标签: r dplyr grouping

我正在使用dplyr尝试计算另一列具有的特定行数

table

所以输出会返回如下内容:

facebook 2  
hello.com 1  
news.com 1    
yahoo    1

类似于

select hostname, count(request)   
from data  
group by hostname
在mysql中

我查看了dplyr包,但不知道如何指定我想要分组的变量

编辑:数据来自NASA来自此链接的http请求 site

1 个答案:

答案 0 :(得分:1)

这是data.table方法。我使用您提供的数据来说明这个概念 - 请继续提供数据,以便其他人可以重现问题(正如评论中所指出的那样)。

数据

library(data.table)
dt <- data.table(hostname = c("hello.com", "news.com", "facebook", "yahoo", "facebook"),
                 request = c("GET /blah/blah", "GET /hello", "GET /no", "GET /yes", "GET /hello"))

<强> CODE

> dt
    hostname        request
1: hello.com GET /blah/blah
2:  news.com     GET /hello
3:  facebook        GET /no
4:     yahoo       GET /yes
5:  facebook     GET /hello

> dt[, .N, by = hostname]
    hostname N
1: hello.com 1
2:  news.com 1
3:  facebook 2
4:     yahoo 1

此处.Ndata.table参数,可为您提供计数。您可以将其重命名为其他内容(以下示例中为“count”):

> dt[, .(count = .N), by = hostname]
    hostname count
1: hello.com     1
2:  news.com     1
3:  facebook     2
4:     yahoo     1

如果您希望每个条目有多种可能性,例如facebook或facebook.com或facebook.co.uk,你需要我们正则表达式。在这种情况下,一个好的方法是按名称排序,然后使用grep找到共同模式并按这些模式进行聚合。