0
我有这样[R如何根据切片一个data.table一个日期到一个列表
Date Rain Temp
1990-01-01 0.0 29.2
1990-03-03 0.0 30.4
1990-06-10 NA 25.2
1990-09-02 0.3 26.8
1991-01-04 0.1 31.2
1991-03-02 0.0 34.0
1991-06-01 5.4 27.1
1991-09-01 0.4 25.1
1992-01-09 0.0 30.8
1992-03-03 0.0 30.7
1992-06-03 4.6 23.1
1992-09-03 0.8 29.1
但更大的一个data.table,大量的线,有时几年都行不同的号码。我需要每次在年份转变切片它并将结果保存到列表:
[[1]]
Date Rain Temp
1990-01-01 0.0 29.2
1990-03-03 0.0 30.4
1990-06-10 NA 25.2
1990-09-02 0.3 26.8
[[2]]
Date Rain Temp
1991-01-04 0.1 31.2
1991-03-02 0.0 34.0
1991-06-01 5.4 27.1
1991-09-01 0.4 25.1
[[3]]
Date Rain Temp
1992-01-09 0.0 30.8
1992-03-03 0.0 30.7
1992-06-03 4.6 23.1
1992-09-03 0.8 29.1
我在做什么到现在为止:
yearly.data <- list
dates.intervals <- list(c("1990-01-01","1990-12-31"),
c("1991-01-02","1991-12-31"),
c("1992-01-02","1992-12-31"))
for (y in dates.intervals){
yearly.data <- c(yearly.data, list(data[Date %between% y]))
}
但是这样一来,结果是
yearly.data
[[1]]
function (...) .Primitive("list")
[[2]]
Date Rain Temp
1990-01-01 0.0 29.2
1990-03-03 0.0 30.4
1990-06-10 NA 25.2
1990-09-02 0.3 26.8
...
...
我不能拿出从[[1]]
该值,但这不是我的主要关注点。我主要关心的是,我认为必须有一个更有效的方法来做到这一点,但我找不到它。
'分裂(DAT,SUBSTR(DAT $日期,1,4))'。如果'Date'列类别的已'Date',你也可以做'分裂(DAT,lubridate ::年(DAT $日期))' –
@Db'Date'是类'Date'所以我用了你最后的建议,这正是我正在寻找的!谢谢! – rvbarreto
如果您使用的是data.table,则不需要在这里使用lubridate。 Data.table为其IDate类提供了一年功能(请参阅'?year')。 – Frank