Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dplyr进行计数和分组_R_Dplyr_Data.table - Fatal编程技术网

使用dplyr进行计数和分组

使用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

我的目标只是计算每天每小时的记录数。我认为使用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 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-一个更好的方法。我要补充一点。