the*_*ide 1 r dplyr data.table
我的目标只是计算每天每小时的记录数。我认为可以使用dplyr
ordata.table
包找到一个简单的解决方案:
我的数据集非常简单:
> head(test)
id date hour
1 14869663 2018-01-24 17
2 14869664 2018-01-24 17
3 14869665 2018-01-24 17
4 14869666 2018-01-24 17
5 14869667 2018-01-24 17
6 14869668 2018-01-24 17
Run Code Online (Sandbox Code Playgroud)
我只需要按两个变量(日期和小时)和计数进行分组。本id
无所谓。但是,这两种方法在里面dplyr
似乎并没有产生想要的结果(输出是一个与输入数据长度相同的数据帧,其中包含数百万条记录)。我在这里做错了什么?
test %>% group_by(date, hour) %>% mutate(count = n())
test %>% add_count(date, hour)
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样
> head(output)
n_records date hour
1 700 2018-01-24 0
2 750 2018-01-24 1
3 730 2018-01-24 2
4 700 2018-01-24 3
5 721 2018-01-24 4
6 753 2018-01-24 5
Run Code Online (Sandbox Code Playgroud)
等等
有什么建议?
这似乎可以解决问题:
library(dplyr)
starwars %>%
group_by(gender, species) %>%
count
Run Code Online (Sandbox Code Playgroud)
似乎(h/t to Frank)计数函数可以直接采用分组字段:
starwars %>% count(gender, species)
Run Code Online (Sandbox Code Playgroud)