[問題] lubridate的使用問題

看板R_Language作者 (阿提)時間9年前 (2016/11/17 23:59), 9年前編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/2 (看更多)
[問題類型]: 程式諮詢(我想用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 [關鍵字]: 選擇性,也許未來有用 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.247.184 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1479398353.A.A02.html

11/18 00:05, , 1F
請提供可完整重現的原始碼
11/18 00:05, 1F
不好意思,已加上library(lubridate) ※ 編輯: hardy1127 (140.138.48.245), 11/18/2016 08:31:48 ※ 編輯: hardy1127 (140.138.48.245), 11/18/2016 08:46:19

11/18 08:53, , 2F
你如果真要這樣寫 先把e_d<-sd; month(ed)<-month(ed)+1
11/18 08:53, 2F

11/18 08:54, , 3F
day(e_day)<-day(e_day)-1 這樣比較保險 NA的問題也許
11/18 08:54, 3F

11/18 08:55, , 4F
原因是「9月不存在31日」
11/18 08:55, 4F

11/18 08:56, , 5F
卡點前你強迫8/31再加一個月變9/31...
11/18 08:56, 5F

11/18 08:57, , 6F
來自78月連續都是31日你隔月減1造成package誤判?
11/18 08:57, 6F

11/18 08:58, , 7F
題外話,運算邏輯不人性化也有錯,建議這種算法重寫喔
11/18 08:58, 7F

11/18 09:04, , 8F
不是卡在減一日那行.. ymd("2015-08-31")不可能加一個月
11/18 09:04, 8F

11/18 16:40, , 9F
謝謝a大c大,頭腦瞬間通了!
11/18 16:40, 9F
文章代碼(AID): #1OBTFHe2 (R_Language)
文章代碼(AID): #1OBTFHe2 (R_Language)