as.POSIXct returns 没有明显原因的 NA
as.POSIXct returns NAs without apparent reason
我正在努力使用 as.POSIXct
函数将字符串转换为日期,因为它为某些行提供 NA 而不是其他行。这是我的一段数据
Fecha hora Lt.s
165397 30/03/2014 0:30:00 4.76
165398 30/03/2014 0:45:00 3.66
165399 30/03/2014 1:00:00 3.84
165400 30/03/2014 1:15:00 3.84
165401 30/03/2014 1:30:00 4.38
165402 30/03/2014 1:45:00 5.14
165403 30/03/2014 2:00:00 7.22
165404 30/03/2014 2:15:00 10.77
165405 30/03/2014 2:30:00 11.79
165406 30/03/2014 2:45:00 13.12
165407 30/03/2014 3:00:00 13.12
165408 30/03/2014 3:15:00 13.12
165409 30/03/2014 3:30:00 13.12
165410 30/03/2014 3:45:00 13.66
所以我粘贴前两列,然后将其转换为 POSIX:
dat$datehour <- as.POSIXct(paste(dat$Fecha, dat$hora),format="%d/%m/%Y %H:%M:%S")
这就是我得到的:
Fecha hora Lt.s datehour
165397 30/03/2014 0:30:00 4.76 2014-03-30 00:30:00
165398 30/03/2014 0:45:00 3.66 2014-03-30 00:45:00
165399 30/03/2014 1:00:00 3.84 2014-03-30 01:00:00
165400 30/03/2014 1:15:00 3.84 2014-03-30 01:15:00
165401 30/03/2014 1:30:00 4.38 2014-03-30 01:30:00
165402 30/03/2014 1:45:00 5.14 2014-03-30 01:45:00
165403 30/03/2014 2:00:00 7.22 <NA>
165404 30/03/2014 2:15:00 10.77 <NA>
165405 30/03/2014 2:30:00 11.79 <NA>
165406 30/03/2014 2:45:00 13.12 <NA>
165407 30/03/2014 3:00:00 13.12 2014-03-30 03:00:00
165408 30/03/2014 3:15:00 13.12 2014-03-30 03:15:00
165409 30/03/2014 3:30:00 13.12 2014-03-30 03:30:00
165410 30/03/2014 3:45:00 13.66 2014-03-30 03:45:00
我的数据框更大了,其他随机行也是如此,但我无法确定这个错误的原因,以及解决它的方法。有人可以帮忙吗?
提前致谢
这是由于您所在时区的夏令时。
as.POSIXct('30/03/2014 2:00:00', format='%d/%m/%Y %H:%M:%S', tz='CET')
# [1] NA
as.POSIXct('30/03/2014 2:00:00', format='%d/%m/%Y %H:%M:%S', tz='EST')
# [1] "2014-03-30 02:00:00 EST"
我正在努力使用 as.POSIXct
函数将字符串转换为日期,因为它为某些行提供 NA 而不是其他行。这是我的一段数据
Fecha hora Lt.s
165397 30/03/2014 0:30:00 4.76
165398 30/03/2014 0:45:00 3.66
165399 30/03/2014 1:00:00 3.84
165400 30/03/2014 1:15:00 3.84
165401 30/03/2014 1:30:00 4.38
165402 30/03/2014 1:45:00 5.14
165403 30/03/2014 2:00:00 7.22
165404 30/03/2014 2:15:00 10.77
165405 30/03/2014 2:30:00 11.79
165406 30/03/2014 2:45:00 13.12
165407 30/03/2014 3:00:00 13.12
165408 30/03/2014 3:15:00 13.12
165409 30/03/2014 3:30:00 13.12
165410 30/03/2014 3:45:00 13.66
所以我粘贴前两列,然后将其转换为 POSIX:
dat$datehour <- as.POSIXct(paste(dat$Fecha, dat$hora),format="%d/%m/%Y %H:%M:%S")
这就是我得到的:
Fecha hora Lt.s datehour
165397 30/03/2014 0:30:00 4.76 2014-03-30 00:30:00
165398 30/03/2014 0:45:00 3.66 2014-03-30 00:45:00
165399 30/03/2014 1:00:00 3.84 2014-03-30 01:00:00
165400 30/03/2014 1:15:00 3.84 2014-03-30 01:15:00
165401 30/03/2014 1:30:00 4.38 2014-03-30 01:30:00
165402 30/03/2014 1:45:00 5.14 2014-03-30 01:45:00
165403 30/03/2014 2:00:00 7.22 <NA>
165404 30/03/2014 2:15:00 10.77 <NA>
165405 30/03/2014 2:30:00 11.79 <NA>
165406 30/03/2014 2:45:00 13.12 <NA>
165407 30/03/2014 3:00:00 13.12 2014-03-30 03:00:00
165408 30/03/2014 3:15:00 13.12 2014-03-30 03:15:00
165409 30/03/2014 3:30:00 13.12 2014-03-30 03:30:00
165410 30/03/2014 3:45:00 13.66 2014-03-30 03:45:00
我的数据框更大了,其他随机行也是如此,但我无法确定这个错误的原因,以及解决它的方法。有人可以帮忙吗? 提前致谢
这是由于您所在时区的夏令时。
as.POSIXct('30/03/2014 2:00:00', format='%d/%m/%Y %H:%M:%S', tz='CET')
# [1] NA
as.POSIXct('30/03/2014 2:00:00', format='%d/%m/%Y %H:%M:%S', tz='EST')
# [1] "2014-03-30 02:00:00 EST"