如何在R中使用strTime()保持午夜(00:00h)?
我有一个数据框df,它的日期因子变量格式如下:如何在R中使用strTime()保持午夜(00:00h)?,r,date,datetime,format,posixct,R,Date,Datetime,Format,Posixct,我有一个数据框df,它的日期因子变量格式如下: 2015-12-15 10:00:00 2015-12-19 12:00:00 2015-12-20 20:00:00 这是每小时的数据。当看到午夜00:00:00时,问题就出现了,因为它不是在这个小时出现的。它只是说: 21/12/2015 如你所见,它只说了一天,却没有时间。 因此,我使用strtime转换为日期格式,使用: df$date <- strptime(df$date,"%d/%m/%Y %H:%M") 我真的很感谢一些
2015-12-15 10:00:00
2015-12-19 12:00:00
2015-12-20 20:00:00
这是每小时的数据。当看到午夜00:00:00时,问题就出现了,因为它不是在这个小时出现的。它只是说:
21/12/2015
如你所见,它只说了一天,却没有时间。
因此,我使用strtime转换为日期格式,使用:
df$date <- strptime(df$date,"%d/%m/%Y %H:%M")
我真的很感谢一些帮助,因为我已经在StackOverflow和其他论坛上查看了以前的帖子,但我还没有找到这个特定问题的解决方案 如果我们有一个
向量
像“v1”,通过使用strtime
我们可以得到那些格式不正确的元素的NA
strptime(v1, "%d/%m/%Y %H:%M:%S", tz = "UTC")
#[1] "2015-12-19 12:00:00 UTC" NA
纠正此问题的一种方法是为那些没有“00:00:00”字符串的用户粘贴“00:00:00”字符串
v1[!grepl(":", v1)] <- paste(v1[!grepl(":", v1)], "00:00:00")
strptime(v1, "%d/%m/%Y %H:%M:%S", tz = "UTC")
#[1] "2015-12-19 12:00:00 UTC" "2015-12-19 00:00:00 UTC"
数据
v1如果我们有一个像“v1”这样的vector
,通过使用strtime
我们可以得到那些格式不正确的元素的NA
strptime(v1, "%d/%m/%Y %H:%M:%S", tz = "UTC")
#[1] "2015-12-19 12:00:00 UTC" NA
纠正此问题的一种方法是为那些没有“00:00:00”字符串的用户粘贴“00:00:00”字符串
v1[!grepl(":", v1)] <- paste(v1[!grepl(":", v1)], "00:00:00")
strptime(v1, "%d/%m/%Y %H:%M:%S", tz = "UTC")
#[1] "2015-12-19 12:00:00 UTC" "2015-12-19 00:00:00 UTC"
数据
R的文件中的v1(增加重点):
格式
字符串。格式方法的默认值为“%Y-%m-%d%H:%m:%S”如果任何元素的时间成分不是午夜,则为“%Y-%m-%d”,否则为。如果设置了选项(“digits.secs”),则最多可打印指定数字数秒
因此,信息仍然存在,您只需对其进行格式化
即可将其与时间组件一起打印出来
> midnight <- strptime("2015-12-19 00:00:00","%Y-%m-%d %H:%M")
> midnight
[1] "2015-12-19 EST"
> format(midnight,"%Y/%m/%d %H:%M")
[1] "2015/12/19 00:00"
>午夜
[1] “美国东部时间2015-12-19”
>格式(午夜,“%Y/%m/%d%H:%m”)
[1] "2015/12/19 00:00"
来自R的文档(重点添加):
格式
字符串。格式方法的默认值为“%Y-%m-%d%H:%m:%S”如果任何元素的时间成分不是午夜,则为“%Y-%m-%d”,否则为。如果设置了选项(“digits.secs”),则最多可打印指定数字数秒
因此,信息仍然存在,您只需对其进行格式化
即可将其与时间组件一起打印出来
> midnight <- strptime("2015-12-19 00:00:00","%Y-%m-%d %H:%M")
> midnight
[1] "2015-12-19 EST"
> format(midnight,"%Y/%m/%d %H:%M")
[1] "2015/12/19 00:00"
>午夜
[1] “美国东部时间2015-12-19”
>格式(午夜,“%Y/%m/%d%H:%m”)
[1] "2015/12/19 00:00"
这些不能是data.frame中日期变量的格式。如果是这样,格式字符串%d/%m/%Y%H:%m“
不应适用于其中任何一个。这表示“日/月/年小时:分钟”,而不是“年-月-日小时:分钟:秒”。请务必提供一个可复制的示例。我认为问题只是POSIXct日期的字符串表示。。。打印POSIXct对象时,默认情况下,它会在00:00:00时隐藏时间部分,但信息仍然存在。。。只需尝试使用格式(日期,“%Y/%m/%d%H:%m”)
打印即可。这些格式不能是data.frame中日期变量的格式。如果是这样,格式字符串%d/%m/%Y%H:%m“
不应适用于其中任何一个。这表示“日/月/年小时:分钟”,而不是“年-月-日小时:分钟:秒”。请务必提供一个可复制的示例。我认为问题只是POSIXct日期的字符串表示。。。打印POSIXct对象时,默认情况下,它会在00:00:00时隐藏时间部分,但信息仍然存在。。。只需尝试使用格式(日期,“%Y/%m/%d%H:%m”)打印即可。