使用dplyr进行计数和分组
我的目标只是计算每天每小时的记录数。我认为使用dplyr或data.table包可以找到一个简单的解决方案: 我的数据集非常简单:使用dplyr进行计数和分组,r,dplyr,data.table,R,Dplyr,Data.table,我的目标只是计算每天每小时的记录数。我认为使用dplyr或data.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 1486
> 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
我只需要根据两个变量date和hour以及count进行分组。身份不重要。然而,dplyr中的这两种方法似乎并没有产生期望的结果—输入数据的长度相同(包括数百万条记录)的数据帧就是输出。我做错了什么
test %>% group_by(date, hour) %>% mutate(count = n())
test %>% add_count(date, hour)
输出将如下所示
> 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
等等
有什么建议吗 这似乎起到了作用:
library(dplyr)
starwars %>%
group_by(gender, species) %>%
count
看来h/t向Frank证明了count函数可以直接获取分组字段:
starwars %>% count(gender, species)
这似乎起到了作用:
library(dplyr)
starwars %>%
group_by(gender, species) %>%
count
看来h/t向Frank证明了count函数可以直接获取分组字段:
starwars %>% count(gender, species)
使用data.table
test[, .N, by=.(date, hour)]
使用data.table
test[, .N, by=.(date, hour)]
基地
如果我们想将NAs视为一个整体:
species1 <- factor(starwars$species, exclude = "")
gender1 <- factor(starwars$gender, exclude = "")
aggregate(name ~ gender1 + species1, data = starwars, length)
基地
如果我们想将NAs视为一个整体:
species1 <- factor(starwars$species, exclude = "")
gender1 <- factor(starwars$gender, exclude = "")
aggregate(name ~ gender1 + species1, data = starwars, length)
测试%>%group\u按日期,小时%>%mutatecount=n这应该有效。你能创建一个小的可重复的例子来帮助我们解决这个问题吗?test%>%group\u bydate,hour%>%mutatecount=n这应该有效。你能创建一个小的可复制的例子来帮助我们解决这个问题吗?@Frank-一个更好的方法。我要补充一点。@Frank-一个更好的方法。我要补充一点。