【问题标题】:Split Date into Year and Month in data.table在 data.table 中将日期拆分为年和月
【发布时间】:2026-01-15 15:30:01
【问题描述】:

给定,

 set.seed(1234)
 library(data.table)
 dt <- data.table(date=c(201405, 201406, 201501, 201503), x = rnorm(4, 0, 1))

返回,

     date          x
1: 201405 -1.2070657
2: 201406  0.2774292
3: 201501  1.0844412
4: 201503 -2.3456977

我想按如下方式将日期拆分为年份和月份:

   year month          x
1: 2014     5 -1.2070657
2: 2014     6  0.2774292
3: 2015     1  1.0844412
4: 2015     3 -2.3456977

我该怎么做?

【问题讨论】:

  • 这不就是dt[, `:=`(year = substr(date, 1, 4), month = substr(date, 5, 6))]吗?不知道这个data.table 是如何具体的。如果你愿意,你也可以将as.integer 包裹在那里。

标签: r date data.table


【解决方案1】:

将评论转换为答案,您可以简单地使用substr 结合引用赋值语义。如果您不希望它返回字符串,可以将其包装到 as.integer

dt[, `:=`(year = substr(date, 1L, 4L), month = substr(date, 5L, 6L))]

【讨论】:

    【解决方案2】:

    你可以用这个->

     dt$month=as.integer(substr(dt$date,5,6))  
     dt$year=substr(dt$date,1,4)    
     dt  
     date               x month year  
     1: 201405 -1.2070657     5 2014  
     2: 201406  0.2774292     6 2014  
     3: 201501  1.0844412     1 2015  
     4: 201503 -2.3456977     3 2015  
    

    【讨论】: