【发布时间】:2021-02-16 21:58:27
【问题描述】:
我有如下数据:
library(lubridate)
library(dplyr)
library(data.table)
MWE <- data.table(
Date=rep(seq(ymd("2020-1-1"), ymd("2020-3-30"), by = "days"),each=6),
Country=rep(c("France","United States","Germany"),90*6),
TransportType=rep(c("Train","Cars"),each=3,90*3),
Value=rnorm(90*6,2,3)
)
我想创建一个新变量,即值的平均值:
- 按国家和交通方式
- 按工作日
- 基于 3 月之前的日期(但这里也是 3 月)
所以平均值应该在一月和二月计算,但在整个时期的数据库中。
我已经成功完成了前两个(或者我认为是的,我正在检查):
MWE_2 <- MWE %>%
.[,JourSem:=weekdays(Date)] %>%
.[,Moyenne:=mean(Value),by=.(Country,JourSem,TransportType)]
但我不确定如何传递另一个条件。我想我是这样理解的
MWE_3 <- MWE %>%
.[,JourSem:=weekdays(Date)] %>%
.[Date <= "2020-02-29",Moyenne:=mean(Value),by=.(Country,JourSem,TransportType)]
但是我缺少三月日期的值,这是合乎逻辑的,因为它们被过滤掉了,因此这不是我想要的。
【问题讨论】:
标签: r data.table data-manipulation