[問題] lubridate的使用問題

作者: hardy1127 (阿提)   2016-11-17 23:59:10
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
我想要印出2015年,每個月的第一天和最後一天,前七個月都正常,
但第八個月之後,最後一天就會變成NA
[程式範例]:
library(lubridate)
year_counter = 2015
mon_counter = 1
while (year_counter < 2016){
s_day = ymd("2015-01-01")
e_day = ymd("2015-01-31")
while (mon_counter < 13) {
print(mon_counter)
print("star is")
print(s_day)
print("end is")
print(e_day)
month(s_day) = month(s_day) + 1
month(e_day) = month(s_day) + 1
day(e_day) = day(s_day) - 1
mon_counter = mon_counter + 1
}
year_counter = year_counter + 1
}
}環境敘述]:
Version 0.99.903–2009-2016 RStudio, Inc.
lubridate 1.6.0
[關鍵字]:
選擇性,也許未來有用
作者: andrew43 (討厭有好心推文後刪文者)   2016-11-18 00:05:00
請提供可完整重現的原始碼
作者: cywhale (cywhale)   2016-11-18 08:53:00
你如果真要這樣寫 先把e_d<-sd; month(ed)<-month(ed)+1day(e_day)<-day(e_day)-1 這樣比較保險 NA的問題也許
作者: andrew43 (討厭有好心推文後刪文者)   2016-11-18 08:55:00
原因是「9月不存在31日」卡點前你強迫8/31再加一個月變9/31...
作者: cywhale (cywhale)   2016-11-18 08:57:00
來自78月連續都是31日你隔月減1造成package誤判?
作者: andrew43 (討厭有好心推文後刪文者)   2016-11-18 08:58:00
題外話,運算邏輯不人性化也有錯,建議這種算法重寫喔不是卡在減一日那行.. ymd("2015-08-31")不可能加一個月
作者: hardy1127 (阿提)   2016-11-18 16:40:00
謝謝a大c大,頭腦瞬間通了!

Links booklink

Contact Us: admin [ a t ] ucptt.com