作者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://webptt.com/cn.aspx?n=bbs/R_Language/M.1479398353.A.A02.html
1F:→ 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
2F:推 cywhale: 你如果真要这样写 先把e_d<-sd; month(ed)<-month(ed)+1 11/18 08:53
3F:推 cywhale: day(e_day)<-day(e_day)-1 这样比较保险 NA的问题也许 11/18 08:54
4F:→ andrew43: 原因是「9月不存在31日」 11/18 08:55
5F:→ andrew43: 卡点前你强迫8/31再加一个月变9/31... 11/18 08:56
6F:→ cywhale: 来自78月连续都是31日你隔月减1造成package误判? 11/18 08:57
7F:→ andrew43: 题外话,运算逻辑不人性化也有错,建议这种算法重写喔 11/18 08:58
8F:→ andrew43: 不是卡在减一日那行.. ymd("2015-08-31")不可能加一个月 11/18 09:04
9F:→ hardy1127: 谢谢a大c大,头脑瞬间通了! 11/18 16:40