[问题] 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