我正在使用dplyr尝试计算另一列具有的特定行数
所以输出会返回如下内容:
facebook 2
hello.com 1
news.com 1
yahoo 1
类似于
select hostname, count(request)
from data
group by hostname
在mysql中。
我查看了dplyr
包,但不知道如何指定我想要分组的变量
编辑:数据来自NASA来自此链接的http请求 site
答案 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
此处.N
是data.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
找到共同模式并按这些模式进行聚合。