R 使用as.POSIXlt进行日期操作
我正在设法找到离今天最近的星期日 我将今天定义为:R 使用as.POSIXlt进行日期操作,r,date,posixlt,R,Date,Posixlt,我正在设法找到离今天最近的星期日 我将今天定义为: dt <- as.Date("2014-06-04") 我可以通过以下方式找到下一个星期天: dt - as.POSIXlt(dt)$wday [1] "2014-06-01" dt + as.POSIXlt(dt)$wday [1] "2014-06-07" 不确定以下各项不起作用的原因: ifelse(as.POSIXlt(dt)$wday <= 3, dt - as.POSIXlt(dt)$wday,
dt <- as.Date("2014-06-04")
我可以通过以下方式找到下一个星期天:
dt - as.POSIXlt(dt)$wday
[1] "2014-06-01"
dt + as.POSIXlt(dt)$wday
[1] "2014-06-07"
不确定以下各项不起作用的原因:
ifelse(as.POSIXlt(dt)$wday <= 3,
dt - as.POSIXlt(dt)$wday,
dt + as.POSIXlt(dt)$wday)
[1] 16222
有什么想法吗?似乎ifelse返回了一个向量,并从日期中删除了POSIX类。为什么不呢
dt + ifelse(as.POSIXlt(dt)$wday <= 3, -1, 1) * as.POSIXlt(dt)$wday
相反。ifelse似乎返回一个向量,并从日期中删除POSIX类。为什么不呢
dt + ifelse(as.POSIXlt(dt)$wday <= 3, -1, 1) * as.POSIXlt(dt)$wday
相反。另一种解决方案:通过调用例如:
structure(ifelse(as.POSIXlt(dt)$wday <= 3,
dt - as.POSIXlt(dt)$wday,
dt + as.POSIXlt(dt)$wday), class="Date")
另一种解决方案:通过调用恢复类属性,例如:
structure(ifelse(as.POSIXlt(dt)$wday <= 3,
dt - as.POSIXlt(dt)$wday,
dt + as.POSIXlt(dt)$wday), class="Date")
此处无需使用ifelse,经典的if/else即可完成此任务:
if(as.POSIXlt(dt)$wday <= 3) dt - as.POSIXlt(dt)$wday else dt + as.POSIXlt(dt)$wday
[1] "2014-06-01"
或者更简单:
wday <- as.POSIXlt(dt)$wday
dt + if(wday<= 3) -wday else wday
此处无需使用ifelse,经典的if/else即可完成此任务:
if(as.POSIXlt(dt)$wday <= 3) dt - as.POSIXlt(dt)$wday else dt + as.POSIXlt(dt)$wday
[1] "2014-06-01"
或者更简单:
wday <- as.POSIXlt(dt)$wday
dt + if(wday<= 3) -wday else wday
1.试试这个:
wday <- as.POSIXlt(dt)$wday
dt + ifelse(wday <= 3, -wday, 7-wday)
3表达这一点的另一种方式是:
dt - wday + 7 * (wday > 3)
1.试试这个:
wday <- as.POSIXlt(dt)$wday
dt + ifelse(wday <= 3, -wday, 7-wday)
3表达这一点的另一种方式是:
dt - wday + 7 * (wday > 3)
+谢谢你的努力。我已经想过了,但我的问题是理解为什么ifelse语句不起作用+谢谢你的努力。我已经想过了,但我的问题是理解为什么ifelse语句不起作用!!请注意,如果dt是Thu、Fri或Sat,则此答案和除我之外的所有答案给出的结果都是错误的。。例如,对于dt,请注意,如果dt为Thu、Fri或Sat,则此答案和除我之外的所有答案都给出了错误的结果。。例如,对于dt