3

我究竟做错了什么??

我用

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

将字符串转换为日期。这对 14780 次观测非常有效。但在两种情况下它会返回NA

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

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

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

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 文件,但找不到与上面和下面的测量值有任何区别。

4

1 回答 1

3

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

时区是一场噩梦:我tz="CET"原以为 using 可以解决问题,但事实并非如此。strptime(mt,"%d.%m.%Y %H:%M",tz="UTC+01:00")没有抱怨,但它创造了 UTC 时代。它可能最容易使用tz="GMT"并假装时间是标准的,即使它们不是......

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

于 2018-01-11T17:55:01.160 回答