关于r:strptime返回两个NAs,它在前后工作正常

strptime returns two NAs while it works fine before and after

我究竟做错了什么??

我用

1
    dates<- strptime(dataframe$Measurement.Time,"%d.%m.%Y %H:%M",tz="")

将字符串转换为日期。 这完全适用于14780次观测。 但在两种情况下,它返回NA

这是一个有效的例子。 摘录均来自相同的结果数据框。

1
2
3
4
5
head(dataframe.with.dates)
        date.time      Measurement.Time mü.mü.VWC.1 ?C.Temp.1
1 2000-01-10 00:30:00  10.01.2000 0:30       -0.011      -0.6
2 2000-01-10 01:00:00  10.01.2000 1:00       -0.011      -0.6
3 2000-01-10 01:30:00  10.01.2000 1:30       -0.011      -0.6

这是我生成的数据框的摘录,显示出错的两个结果:

1
2
3
4
subset(dataframe.with.dates,is.na(dataframe.with.dates$date.time))
          date.time Measurement.Time  mü.mü.VWC   ?C.Temp
    9572      <NA>  29.03.2015 2:00      -0.011      -0.6
    9573      <NA>  29.03.2015 2:30      -0.011      -0.6

其中"date.time"在POSIXlt中,"Measurement.time"是character中的原始日期。

我检查了原始的.txt文件,我从中获取了数据,但无法找到上下测量值的任何差异。


谷歌搜索"夏令时2015年3月29日"表明这是春季转向欧洲夏令时的日期,例如:https://www.timeanddate.com/news/time/europe-starts-dst-2015.html

时区是一场噩梦:我原本以为使用tz="CET"可以做到这一点,但事实并非如此。 strptime(mt,"%d.%m.%Y %H:%M",tz="UTC+01:00")不会抱怨,但会以UTC格式创建时间。 最简单的方法是使用tz="GMT"并假装时间是标准的,即使它们不是......

我确定有重复,但回答你的问题比找到它们更容易(我确实花了几分钟尝试)。