将整数转换为R中的日期和时间
我有一个int列,其值为将整数转换为R中的日期和时间,r,date,time,type-conversion,R,Date,Time,Type Conversion,我有一个int列,其值为30、2230、130是否有任何函数可以将它们转换为30到00:30和130到01:30?我用过: format(strftime(col,format="%H:%M"), format="%H:%M") 但它返回了一个错误: as.POSIXlt(x, tz=tz)::'origin' must be supplied 我还需要在时间转换后的时间之前添加yy-mm-dd,以便最终输出可以像“1980-05-28 00:30”,“1980-05-28 22:30”,
30、2230、130
是否有任何函数可以将它们转换为30
到00:30
和130
到01:30
?我用过:
format(strftime(col,format="%H:%M"), format="%H:%M")
但它返回了一个错误:
as.POSIXlt(x, tz=tz)::'origin' must be supplied
我还需要在时间转换后的时间之前添加yy-mm-dd,以便最终输出可以像“1980-05-28 00:30”
,“1980-05-28 22:30”
,和“1980-05-28 01:30”
有人能帮忙吗?您可以尝试使用
as.POSIXct
和sprintf
以及粘贴来创建日期/时间:
as.POSIXct(paste("1980-05-28", sprintf("%04d",c(130, 2030, 1120, 30,0120)),sep = " "),
format = "%Y-%m-%d %H%M")
# [1] "1980-05-28 01:30:00 BST" "1980-05-28 20:30:00 BST" "1980-05-28 11:20:00 BST"
# [4] "1980-05-28 00:30:00 BST" "1980-05-28 01:20:00 BST"
注意:解决方案与@r2evans建议的类似。我试着简化一下。as.POSIXct(gsub(^(..)(..),“1980-05-28\\1:\\2”,sprintf(%04d),c(302230130)),format=“%Y-%m-%d%H:%m”)
这解决了我的问题,但是,如果你有数百次不同的时间,sprintf(%04d),c(1302030,112030120))并不能解决问题。假设你有30,31。。。。。。。。你能不断地加起来吗?有什么想法吗?@NaPengsprintf(“%04d”,c(1302030,1120,30120))
应该适用于任何数量的元素。请向我提供10
您认为无效的时间,我将修改我的答案。谢谢您的回复,我想我没有把问题说清楚。我想知道的是,如果没有指定30,1:30,函数是否会有相同的结果。。。。。。想想看,如果你有更多不同的时间,那么你必须输入每一个时间,这会增加人为错误的概率。希望这次我能说清楚。@NaPeng数据在哪里?你必须从某个地方读取数据,然后转换成时间。数据在文件中吗?我在SQL中这样做只是想知道我们在R中是否也有类似的函数。:)