Эти вопросы в основном являются расширением моего следующего сообщения R - Условные операции над временными переменными и датами
Моя проблема связана с ошибкой, возникающей в расширении в виде вложенного оператора ifelse (например, см. https://www.listendata.com/2017/03/if-else-in-r.html) соответственно решение @griffinevo. Предположим, что у меня разное время закрытия местных фондовых бирж (один и тот же часовой пояс). Я хочу использовать вложенные операторы ifelse, чтобы различать время закрытия. Однако проблема заключается в следующей ошибке:
Error in ifelse(StockExchanges %in% c("Vienna"), difftime(as.POSIXct(HMS, :
unused argument (ifelse(StockExchanges %in% c("Frankfurt"), difftime(as.POSIXct("22:00:00", format = "%H:%M:%S")) > 0, as.character(TimeStamp + 1), ifelse(StockExchanges %in% c("Frankfurt"), difftime(as.POSIXct("22:00:00", format = "%H:%M:%S")) > 0, as.character(TimeStamp + 1), as.character(TimeStamp))))
Кажется, у меня ошибка в синтаксисе, однако я не знаю, что именно не так.
Предположим, у меня есть следующие 3 фондовые биржи: Вена, Франкфурт и Гамбург и разное время закрытия. Я хочу создать новую переменную TimeStampNew
и увеличить день на единицу, если varibale HMS
после критических часов закрытия нескольких фондовых бирж. Здесь первые строки фрейма данных df.
TimeStamp HMS StockExchange
1: 2013-09-15 19:54:00 Vienna
2: 2016-05-10 18:58:00 Vienna
3: 2014-09-22 22:47:00 Hamburg
4: 2012-01-30 18:03:00 Frankfurt
5: 2013-05-24 08:00:00 Vienna
6: 2013-06-07 11:45:00 Vienna
7: 2016-11-30 12:39:00 Vienna
8: 2007-03-28 NA Vienna
9: 2007-05-10 NA Hamburg
10: 2007-08-09 NA Vienna
11: 2007-11-08 NA Frankfurt
12: 2008-03-27 NA Vienna
Это мой синтаксис, выдающий ошибку выше:
df$TimeStampNew <-
with(df,
ifelse(StockExchanges %in% c("Vienna") ,
difftime(as.POSIXct(HMS, format = "%H:%M:%S"),
as.POSIXct("17:35:00", format = "%H:%M:%S")) > 0,
as.character(TimeStamp + 1),
ifelse(StockExchanges %in% c("Frankfurt") ,
difftime(as.POSIXct("22:00:00", format = "%H:%M:%S")) > 0,
as.character(TimeStamp + 1),
ifelse(StockExchanges %in% c("Hamburg") ,
difftime(as.POSIXct("20:00:00", format = "%H:%M:%S")) > 0,
as.character(TimeStamp + 1),
as.character(TimeStamp)))))
df1$TimeStampNew[is.na(df1$HMS)] <- as.character(df1$TimeStamp[is.na(df1$HMS)])
Есть ли у кого-нибудь идеи, где можно найти ошибку, соответственно, есть альтернативное возможное решение? Заранее спасибо!