作者hardy1127 (阿提)
看板R_Language
標題[問題] lubridate的使用問題
時間Thu Nov 17 23:59:10 2016
[問題類型]:
程式諮詢(我想用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
→ andrew43: 請提供可完整重現的原始碼 11/18 00:05
不好意思,已加上library(lubridate)
※ 編輯: hardy1127 (140.138.48.245), 11/18/2016 08:31:48
※ 編輯: hardy1127 (140.138.48.245), 11/18/2016 08:46:19
推 cywhale: 你如果真要這樣寫 先把e_d<-sd; month(ed)<-month(ed)+1 11/18 08:53
推 cywhale: day(e_day)<-day(e_day)-1 這樣比較保險 NA的問題也許 11/18 08:54
→ andrew43: 原因是「9月不存在31日」 11/18 08:55
→ andrew43: 卡點前你強迫8/31再加一個月變9/31... 11/18 08:56
→ cywhale: 來自78月連續都是31日你隔月減1造成package誤判? 11/18 08:57
→ andrew43: 題外話,運算邏輯不人性化也有錯,建議這種算法重寫喔 11/18 08:58
→ andrew43: 不是卡在減一日那行.. ymd("2015-08-31")不可能加一個月 11/18 09:04
→ hardy1127: 謝謝a大c大,頭腦瞬間通了! 11/18 16:40