iT邦幫忙

1

R語言如何快速新增資料

想請問各位大大,我是用R語言,有沒有甚麼快速的方法可以做到篩選日期時間並新增新的一欄(season)資料

原始資料如下:
https://ithelp.ithome.com.tw/upload/images/20200316/20110847fSCTsEVLuG.png
想變成這樣:
https://ithelp.ithome.com.tw/upload/images/20200316/20110847tCpNk5qlKJ.png

我是用本土煉鋼法,利用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)
你季節分隔的日期,是你獨創的嗎?
你是要按照一般分幾季的方式? 還是要按照你上面的判斷式?
你的判斷式,看不出來之間的邏輯一致性.
phes11434 iT邦新手 5 級 ‧ 2020-03-16 14:42:23 檢舉
其實我是要按照農曆的節氣去分,上面只是舉例的例子,我也還在想農曆的節氣有什麼邏輯一致性

1 個回答

0

我覺得這樣會快一點,日期轉數字(個人習慣都轉數字),很單純的用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"))))
phes11434 iT邦新手 5 級 ‧ 2020-03-16 14:44:48 檢舉

這個方向我有想過,但是因為我要做的是24節氣的區分,會使一月跟12月會有相同的標籤

我要發表回答

立即登入回答