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_Dataframe_Split_Datetime Format - Fatal编程技术网

R 在数据帧中拆分日期和时间

R 在数据帧中拆分日期和时间,r,date,dataframe,split,datetime-format,R,Date,Dataframe,Split,Datetime Format,我在数据框中有一列日期列表,日期格式为201001011200as%Y%m%d%H%m。我想将它们拆分为%Y%m%d和%H%m作为日期和时间 我试图as.Date(data$Date,origin=“1970-01-01”)但收到一条错误消息 charToDate(x)中出错:字符串不在标准格式中 明确的格式 日期的类别是数字。因此,我尝试将其转换为字符,并应用上述as.Date函数,但没有任何帮助 有什么想法吗?先谢谢你 编辑 以下是我的数据示例: Index Date ra

我在数据框中有一列日期列表,日期格式为
201001011200
as
%Y%m%d%H%m
。我想将它们拆分为
%Y%m%d
%H%m
作为日期和时间

我试图
as.Date(data$Date,origin=“1970-01-01”)
但收到一条错误消息

charToDate(x)中出错:字符串不在标准格式中 明确的格式

日期的类别是
数字
。因此,我尝试将其转换为
字符
,并应用上述
as.Date
函数,但没有任何帮助

有什么想法吗?先谢谢你

编辑

以下是我的数据示例:

Index Date          rank amount
81211 201004090000  11 4.9
81212 201004090100  11 4.6
81213 201004090200  11 3.3
81214 201004090300  11 2.7
81215 201004090400  11 3.1
81216 201004090500  11 3.7
81217 201004090600  11 4.0
81218 201004090700  11 4.2
81219 201004090800  11 4.2
81220 201004090900  11 4.0

更新答案:从示例数据开始,您可以

data$Date <- as.POSIXct(as.character(data$Date), format =  "%Y%m%d%H%M")

原始答案:如果您是从一个数值开始的,请将其包装在
as.character()
中,然后通过
as.POSIXct()
运行它以获得POSIX日期时间值

data$Date <- as.POSIXct(as.character(data$Date), format = "%Y%m%d%H%M")
然后,要分开日期和时间,您可以执行以下操作

list(as.Date(x), format(x, "%T"))
# [[1]]
# [1] "2010-01-01"
# 
# [[2]]
# [1] "12:00:00"
分别给出日期和字符分类的项目。对于普通的旧字符向量,只需使用
format()
两次

c(format(x, "%m-%d-%Y"), format(x, "%T"))
# [1] "01-01-2010" "12:00:00"  


比我快。。OP说他们是从数字开始的,但他们已经知道如何使用
as.character()
,所以你的答案应该会让他们知道剩下的部分…@Richard Scriven上面的日期
201001011200
只是
date
列中的一个日期。日期通过增加小时来更改。所以,我有大约10万行。上面的解决方案不起作用。我还使用了
数据$Date@RichardScriven您在评论部分的解决方案运行良好。从那以后,我使用以下方法将其拆分为日期和时间:
data$Date@RichardScriven为什么
data$Time
(x <- as.POSIXct(as.character(201001011200), format = "%Y%m%d%H%M"))
# [1] "2010-01-01 12:00:00 PST"
list(as.Date(x), format(x, "%T"))
# [[1]]
# [1] "2010-01-01"
# 
# [[2]]
# [1] "12:00:00"
c(format(x, "%m-%d-%Y"), format(x, "%T"))
# [1] "01-01-2010" "12:00:00"  
c(as.character(as.Date(x)), format(x, "%T"))
# [1] "2010-01-01" "12:00:00"