2014-03-18 2 views
0

У меня возникла интересная проблема. У меня есть поминутные данные за 2014 год для некоторых акций, и я хочу анализировать только пятницы, и я использую приведенный ниже код. Он отлично работает, пока не доберется до марта. Внезапно, четвергам дается недельное значение 5 из 4-й строки кода ниже.POSIXlt Изменение буднего дня В марте 2014 года

Например, 3/14/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) 

Спасибо.

ответ

2

Это потому, что в вашем формате даты используется «% y», а не «% Y».

«% y» - это двузначный год ('14'), но «% Y» - это 4-значный год, а ваши годы имеют 4 цифры.

например.

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» и «% г» означает, что это год «2020».

+0

Я думал, что все наоборот. Спасибо, что исправил меня. – mks212

Смежные вопросы