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