POSIXlt 2014年3月更改工作日

时间:2014-03-18 00:53:35

标签: r date

我有一个有趣的问题。我有2014年某些股票的分钟数据,我只想分析星期五,并使用下面的代码这样做。它很有效,直到三月。突然之间,星期四从下面代码的第4行开始给出工作日值5。

例如,2014年3月14日是上周五,但是,下面的代码将3/13/14设为星期五,即使是周四。

我的猜测是这与闰年有关,但这只是猜测。知道是什么导致了这个以及如何解决它吗?

LNKD.csv,https://drive.google.com/file/d/0B4xAKSwsHiEBNVpEbHJGMU9QYXc/edit?usp=sharing

LNKD Clean.csv,https://drive.google.com/file/d/0B4xAKSwsHiEBVjBKcTM1VVg3aU0/edit?usp=sharing

data <- read.csv("LNKD.csv", stringsAsFactors=FALSE)
data$Up <- NULL
data$Down <- NULL
data$weekday <- as.POSIXlt(data$Date, format="%m/%d/%y")$wday
data <- subset(data, data$weekday==5)
write.csv(data, file="LNKD Clean.csv", row.names=FALSE)

谢谢。

1 个答案:

答案 0 :(得分:2)

这是因为您的日期格式使用'%y'而不是'%Y'。

'%y'是两位数年份('14'),但'%Y'是4位数年份,而您的年份有4位数。

e.g。

as.POSIXlt('03/13/2014', format="%m/%d/%y")
# "2020-03-13"

as.POSIXlt('03/13/2014', format="%m/%d/%Y")
# "2014-03-13"

您的所有日期都被解释为2020年,因为“2014”的前两位数字是“20”,“%y”表示这是“2020”年。