想請問各位大大,我是用R語言,有沒有甚麼快速的方法可以做到篩選日期時間並新增新的一欄(season)資料
原始資料如下:
想變成這樣:
我是用本土煉鋼法,利用filter慢慢地篩選資料
想問各位有沒有更快速的方法
附上程式碼給各位
dta <- data.frame(id = letters[1:12],
date = as.Date(c("2016/01/01","2016/02/01","2016/03/01","2016/04/01","2016/05/01","2016/06/01",
"2016/07/01","2016/08/01","2016/09/01","2016/10/01","2016/11/01","2016/12/01")))
str(dta)
dta
dta2 = filter(dta, date>="2016/02/01"&date<="2016/04/01")
dta2$season=c("1")
dta3 = filter(dta, date>"2016/04/01"&date<"2016/12/01")
dta3$season=c("2")
dta4 = filter(dta, date>="2016/12/01")
dta4$season=c("3")
dta5 = filter(dta, date<="2016/01/01")
dta5$season=c("3")
dta1=rbind(dta2,dta3,dta4,dta5)
dta1_arranfe=arrange(dta1,date)
我覺得這樣會快一點,日期轉數字(個人習慣都轉數字),很單純的用if去分
library(dplyr)
dta <- mutate(dta,數字=as.numeric(gsub("-","",dta$date)))
dta <- dta %>%
mutate(季節=ifelse(數字>=20160301&數字<=20160531,"1",
ifelse(數字>=20160601&數字<=20160831,"2",
ifelse(數字>=20160901&數字<=20161130,"3","4"))))