Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将整数转换为R中的日期和时间_R_Date_Time_Type Conversion - Fatal编程技术网

将整数转换为R中的日期和时间

将整数转换为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”,

我有一个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”
,和
“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。。。。。。。。你能不断地加起来吗?有什么想法吗?@NaPeng
sprintf(“%04d”,c(1302030,1120,30120))
应该适用于任何数量的元素。请向我提供
10
您认为无效的时间,我将修改我的答案。谢谢您的回复,我想我没有把问题说清楚。我想知道的是,如果没有指定30,1:30,函数是否会有相同的结果。。。。。。想想看,如果你有更多不同的时间,那么你必须输入每一个时间,这会增加人为错误的概率。希望这次我能说清楚。@NaPeng数据在哪里?你必须从某个地方读取数据,然后转换成时间。数据在文件中吗?我在SQL中这样做只是想知道我们在R中是否也有类似的函数。:)