【问题标题】:Dummy for time series in RR中时间序列的虚拟对象
【发布时间】:2019-02-09 06:15:08
【问题描述】:

我有一个数据集,其中一列代表每月日期:从 02/01/2004 到 09/01/2008,我必须为 2008 年的日期创建一个虚拟对象。我尝试使用:

dummy <- as.numeric(Date >= 01/01/2008),

但是 R 对我说:

">= 对因子没有意义"

因此我尝试将因子变量 Date 转换为数字,但我所有的 Dates 都消失了,取而代之的是一些随机数。

【问题讨论】:

  • 请给我们提供一个生殖例子

标签: r statistics time-series dummy-data


【解决方案1】:

这会创建一些数据:

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

【讨论】:

  • 我试着按照你说的去做,但是当我使用时: dat$date
  • 您应该在帖子中添加数据示例。就像从 dput(my_data) 复制输出一样。
  • 这是我的数据:structure(list(Date= c("01/01/2005", "01/01/2006", "01/01/2007" , "01/01/2008", "02/01/2004", "02/01/2005", "02/01/2006", "02/01/2007"), class= "因子"), LB = C(86.71,82.86,73.39,75.65,75.25,70.1,73.24,80.18),CAC40 = C(3730.36,3625.22,3677.77,3671.49,3732.5,3654.4,3638,3682),DAX = C(4018.16,3856.7,3978.26 ,3921.49,4065.4,3891.2,3838.5,3924.5)Dow = C(10588.22,10354.96,10233.8,10203.79,10437,10138.7,1125.8,10131),EURUSD = C(1.25,1.23,1.2,1.22,1.22,1.2,1.2 , 1.23), 布伦特 = c(32.22, 32.77, 34.48, 36.61, 34.48, 40.02, 40.63, 46.08)))
  • 我认为问题在于您有日期as.factor,您是从 csv 导入这些数据还是什么?如果是这样,请在导入时使用stringAsFactors = FALSE。 (例如:read.csv("file.csv", stringAsFactors = FALSE)
  • 谢谢现在我解决了日期的问题,我做了你建议的一切,直到创建一个 0 虚拟 si 一切都很好,当我这样做时:dat$dummy[which(dat $date >= "2018-01-01")] ,什么都没有发生,所以我的 2008 年的假人也没有
【解决方案2】:

一行命令,使用@RLave 的回答:

dat$dummy <- as.numeric(dat$date >= "2018-01-01")

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2015-03-11
    • 2016-04-18
    • 1970-01-01
    • 2013-04-30
    相关资源
    最近更新 更多