润滑;Dplyr如何按周和类别聚合数据帧
考虑下面的例子润滑;Dplyr如何按周和类别聚合数据帧,r,dplyr,lubridate,R,Dplyr,Lubridate,考虑下面的例子 library(dplyr) library(lubridate) time <- seq(from =ymd("2014-01-01"),to= ymd("2014-02-20"), by="days") values <- sample(seq(from = 20, to = 50, by = 5), size = length(time), replace = TRUE) tipe <- sample(rep(x = c("Tipe_A", "Tipe_
library(dplyr)
library(lubridate)
time <- seq(from =ymd("2014-01-01"),to= ymd("2014-02-20"), by="days")
values <- sample(seq(from = 20, to = 50, by = 5), size = length(time), replace = TRUE)
tipe <- sample(rep(x = c("Tipe_A", "Tipe_B", "Tipe_C")), size = length(time), replace = TRUE)
df2 <- data_frame(time, tipe, values)
# A tibble: 51 x 3
time tipe values
<date> <chr> <dbl>
1 2014-01-01 Tipe_B 40
2 2014-01-02 Tipe_B 30
3 2014-01-03 Tipe_A 35
4 2014-01-04 Tipe_A 50
5 2014-01-05 Tipe_B 35
6 2014-01-06 Tipe_B 50
7 2014-01-07 Tipe_A 50
8 2014-01-08 Tipe_B 40
9 2014-01-09 Tipe_A 30
10 2014-01-10 Tipe_B 25
# ... with 41 more rows
库(dplyr)
图书馆(lubridate)
时间%
总结(avr=平均值(差值,na.rm=T))
#一个tibble:7x2
每周平均值
1 1 7.5
2 2 -20
3 3 3.33
4 5 0
5 6 -3.33
6 7 -10
7 8 25
然而,我有很多类型,所以这将是一个乏味的过程
是否有办法使每种类型的分组更有效?在这里,我们可能需要先按“tipe”进行分组,然后计算“差异”,并将“周”添加为分组列,然后才能在
摘要中获得平均值
library(dplyr)
df2 %>%
group_by(tipe) %>%
mutate(diff = values - lag(values, order_by = time)) %>%
group_by(week = week(time), .add = TRUE) %>%
summarise(avr = mean(diff, na.rm = TRUE))
或者先排列
df2 %>%
arrange(tipe, time) %>%
group_by(tipe) %>%
mutate(diff = values - lag(values)) %>%
group_by(week = week(time), .add = TRUE) %>%
summarise(avr = mean(diff, na.rm = TRUE))
在这里,我们可能需要先按“tipe”进行分组,然后计算“diff”,再将“week”添加为分组列,然后才能在摘要中获得平均值
library(dplyr)
df2 %>%
group_by(tipe) %>%
mutate(diff = values - lag(values, order_by = time)) %>%
group_by(week = week(time), .add = TRUE) %>%
summarise(avr = mean(diff, na.rm = TRUE))
或者先排列
df2 %>%
arrange(tipe, time) %>%
group_by(tipe) %>%
mutate(diff = values - lag(values)) %>%
group_by(week = week(time), .add = TRUE) %>%
summarise(avr = mean(diff, na.rm = TRUE))
我猜你需要df2%%>%groupby(tipe)%%>%变异(…
我猜你需要df2%%>%groupby(tipe)%%>%变异(…
我接受你的建议,添加了groupby(week=week(time),tipe)%%>%
起初我以为“滞后”会有问题函数采用错误的周数/类型。但是它工作得很好。谢谢你的推荐,并添加了groupby(week=week(time),tipe)%%>%
起初我以为“lag”函数采用错误的周数/类型会有问题。但是它工作得很好。谢谢