我有以下数据框df
:
timestamp ave.temperature min.temperature max.temperature
1/10/2017 0:00 27.20604 25.50000 28.54444
1/10/2017 1:00 27.24487 25.70000 28.60682
1/10/2017 2:00 27.26597 25.60667 28.76333
1/10/2017 3:00 27.16104 25.60000 28.32833
我想将timestamp
列转换为以下形式:
timestamp ave.temperature min.temperature max.temperature
1/10/2017 00:00:00 27.20604 25.50000 28.54444
1/10/2017 01:00:00 27.24487 25.70000 28.60682
1/10/2017 02:00:00 27.26597 25.60667 28.76333
1/10/2017 03:00:00 27.16104 25.60000 28.32833
到目前为止,我已经尝试过df$timestamp <- as.Date(df$timestamp, format="%d/%m/%Y %H:%M:%S")
,但它为NA
列返回了timestamp
值:
timestamp ave.temperature min.temperature max.temperature
NA 27.20604 25.50000 28.54444
NA 27.24487 25.70000 28.60682
NA 27.26597 25.60667 28.76333
NA 27.16104 25.60000 28.32833
但是,df$timestamp <- as.Date(df$timestamp, format="%d/%m/%Y %H:%M")
变为:
timestamp ave.temperature min.temperature max.temperature
1/10/2017 27.20604 25.50000 28.54444
1/10/2017 27.24487 25.70000 28.60682
1/10/2017 27.26597 25.60667 28.76333
1/10/2017 27.16104 25.60000 28.32833
至此,我真的不知道为什么会发生这种情况,并且到目前为止还没有设法在网上找到任何类似的案例。
备注::使用as.POSIXct(df$timestamp, format="%d/%m/%Y %H:%M:%S")
也会在NA
列中产生timestamp
。
更新:找到了解决方案,但仍存在as.Date
的谜团(请参阅下面的答案)。
答案 0 :(得分:0)
好吧。。我想我可能已经花了很多时间了,但是我发现以下方法可以解决
:as.POSIXct(df$timestamp, format="%d/%m/%Y %H:%M")
所以df
变成
timestamp ave.temperature min.temperature max.temperature
1/10/2017 00:00:00 27.20604 25.50000 28.54444
1/10/2017 01:00:00 27.24487 25.70000 28.60682
1/10/2017 02:00:00 27.26597 25.60667 28.76333
1/10/2017 03:00:00 27.16104 25.60000 28.32833
根据需要。在这一点上,我仍然不明白为什么as.Date
不能使用相同的功能。目前,我将不接受我的回答,将欢迎您提供任何答案,这些答案有助于澄清为何df$timestamp <- as.Date(df$timestamp, format="%d/%m/%Y %H:%M")
消除了以上问题中的小时粒度,以及为什么df$timestamp <- as.Date(df$timestamp, format="%d/%m/%Y %H:%M:%S")
导致了整个问题timestamp
列最终具有NA
个值。.再次感谢!