样本数据csv格式.保存在文件中broken_posix.csv
Date
3/10/2012 23:00
3/11/2012 0:00
3/11/2012 1:00
3/11/2012 2:00
3/11/2012 3:00
3/11/2012 4:00
3/11/2012 5:00
3/11/2012 6:00
3/11/2012 7:00
3/11/2012 8:00
3/11/2012 9:00
3/11/2012 10:00
3/11/2012 11:00
3/11/2012 12:00
3/11/2012 13:00
3/11/2012 14:00
3/11/2012 15:00
3/11/2012 16:00
3/11/2012 17:00
3/11/2012 18:00
3/11/2012 19:00
3/11/2012 20:00
3/11/2012 21:00
3/11/2012 22:00
3/11/2012 23:00
3/12/2012 0:00
3/12/2012 1:00
3/12/2012 2:00
3/12/2012 3:00
3/12/2012 4:00
3/12/2012 5:00
3/12/2012 6:00
3/12/2012 7:00
3/12/2012 8:00
3/12/2012 9:00
3/12/2012 10:00
3/12/2012 11:00
Run Code Online (Sandbox Code Playgroud)
嗨伙计们,所以我有这个文件,broken_posix.csv
我可以很好地阅读文件
a_var <- read.csv("broken_posix.csv")
Run Code Online (Sandbox Code Playgroud)
然后我可以将其转换为posix使用
a_var_posixct = as.POSIXct(strptime( as.character( a_var$Date) , '%m/%d/%Y %H:%M'))
Run Code Online (Sandbox Code Playgroud)
或者
a_var_posixlt = strptime(as.character( a_var$Date) , '%m/%d/%Y %H:%M')
Run Code Online (Sandbox Code Playgroud)
现在出现问题,因为当我使用posixct时,我每年在字符串中得到4个NA值.当我使用时,posixlt我得到一个NA值March 11,2012 at 2 (daylight savings time)
当你跑步时,你会明白我的意思
which(is.na(a_var_posixct))
which(is.na(a_var_posixlt))
a_var_posixct[4]
a_var_posixlt[4]
Run Code Online (Sandbox Code Playgroud)
NA每当您应用操作时,第四个值始终是一个值,即使它显然是posixlt的日期值.
我试过省略这个值只是为了弄乱posix字符串的其余部分.我已经尝试将posix字符串设置为自身,试图清除NA标志,没有效果.我甚至尝试将其设置为字符值,只是为了丢失小时和分钟格式.
我认为这种情况是因为夏令时而发生的.处理这是非常令人沮丧的,因为当我尝试在日期运行其他函数时,我必须尝试避免NA值,因为我无法更改它们.我可以按天聚合数据,或者只是使用日期对象,但这似乎不是正确的方法.
使用没有夏令时的时区可以解决这类问题.
a_var_posixlt = strptime(as.character( a_var$Date) , '%m/%d/%Y %H:%M',tz="GMT")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |