Я создаю временный ряд данных, который я буду использовать для объединения других данных временных рядов.Как поддерживать часовой пояс с помощью POSIX DateTime и избегать NA, введенных принуждением в R?
dates2010 <- seq(as.POSIXct("2010-06-15 00:00:00", tz = "GMT"), as.POSIXct("2010-09-15 23:00:00", tz = "GMT"), by="hour") # make string of DateTimes for summer 2010
dates2011 <- seq(as.POSIXct("2011-06-15 00:00:00", tz = "GMT"), as.POSIXct("2011-09-15 23:00:00", tz = "GMT"), by="hour") # make string of DateTimes for summer 2011
dates <- c(dates2010, dates2011) # combine the dates from both years
sites <- c("a", "b", "c") # make string of all sites
datereps <- rep(dates, length(sites)) # repeat the date string the same number of times as there are sites
sitereps <- rep(sites, each = length(dates)) # repeat each site in the string the same number of times as there are dates
n <- data.frame(DateTime = datereps, SiteName = sitereps) # merge two strings with all dates and all sites
n <- n[order(n$SiteName, n$Date),] # re-order based on site, then date
Если я запускаю приведенный выше код 'dates2010' и 'dates2011' в формате GMT: dates2010[1]
"2011-06-15 00:00:00 GMT". Но когда я создаю объект «даты» для некоторых переключателей формата Причины в EST: dates[1]
«2010-06-14 19:00:00 EST»
Может быть, это что-то делать с классами POSIX?
class(dates2010)
[1] "POSIXct" "POSIXt"
Я попытался change the default time zone for R по Гринвичу, чтобы избежать проблем времени переключения зоны. Это приводит к ошибке совпадения NA при попытке упорядочить фрейм данных 'n' и объединить другие кадры данных в 'n'.
n <- n[order(n$SiteName, n$Date),]
Warning message:
In xtfrm.POSIXct(x) : NAs introduced by coercion
Любые мысли о том, как я могу поддерживать часовые пояса постоянными и избегать ошибок принуждения NA? Спасибо!
'DateTimeClasses': _Using' c' на объекты «POSIXlt» преобразует их в текущем часовом поясе, так и на объектах «POSIXct» капель какой-либо «tzone» атрибуты (даже если все они отмечены тем же часовой пояс). По-видимому, нет способа избежать этого, поэтому вам просто нужно сбросить атрибут после факта, как показано ниже. – alistaire
Ваш метод работал @Rich Scriven, чтобы изменить часовой пояс «дат» на «GMT». 'date <- structure (c (date2010, date2011), tzone =" GMT ")'. Благодарю. – notacodr
О, ничего себе. Спасибо за эту информацию @alistaire. – notacodr