R 中时间序列的虚拟对象
Dummy for time series in R
我有一个数据集,其中一列代表每月 Date:from 02/01/2004 到 09/01/2008,我必须为 2008 年的日期创建一个虚拟对象。我尝试使用:
dummy <- as.numeric(Date >= 01/01/2008)
,
但是 R 对我说:
">= is not meaningful for factors"
因此我尝试将因子变量日期转换为数字,但我所有的日期都消失了,取而代之的是一些随机数。
这会创建一些数据:
dat <- data.frame(
date = c("01/01/2017", "02/01/2017", "01/01/2018")
)
现在我们首先得到正确的日期格式,然后我们创建虚拟对象:
dat$date <- strptime(as.character(dat$date), "%d/%m/%Y") # correct date format
dat$date <- format(dat$date, "%Y-%m-%d") # change to Date variable
# create dummy:
dat$dummy <- 0
dat$dummy[which(dat$date >= "2018-01-01")] <- 1
输出:
date dummy
1 2017-01-01 0
2 2017-01-02 0
3 2018-01-01 1
一行命令,使用@RLave的回答:
dat$dummy <- as.numeric(dat$date >= "2018-01-01")
我有一个数据集,其中一列代表每月 Date:from 02/01/2004 到 09/01/2008,我必须为 2008 年的日期创建一个虚拟对象。我尝试使用:
dummy <- as.numeric(Date >= 01/01/2008)
,
但是 R 对我说:
">= is not meaningful for factors"
因此我尝试将因子变量日期转换为数字,但我所有的日期都消失了,取而代之的是一些随机数。
这会创建一些数据:
dat <- data.frame(
date = c("01/01/2017", "02/01/2017", "01/01/2018")
)
现在我们首先得到正确的日期格式,然后我们创建虚拟对象:
dat$date <- strptime(as.character(dat$date), "%d/%m/%Y") # correct date format
dat$date <- format(dat$date, "%Y-%m-%d") # change to Date variable
# create dummy:
dat$dummy <- 0
dat$dummy[which(dat$date >= "2018-01-01")] <- 1
输出:
date dummy
1 2017-01-01 0
2 2017-01-02 0
3 2018-01-01 1
一行命令,使用@RLave的回答:
dat$dummy <- as.numeric(dat$date >= "2018-01-01")