如何在R中将字符字段转换为日期/时间格式?

时间:2015-03-09 06:19:31

标签: r

这就是我的数据。我想将日期和时间列转换为时间戳并将其放在一列中。

任何帮助表示赞赏。感谢

    DATE        TIME    CLOSE   HIGH    LOW     OPEN    VOLUME
1   20150216    1520    2283.85 2284    2275.6  2275.6  48309
2   20150216    1530    2282    2284    2273.15 2283.85 108856
3   20150218    920     2276.1  2280.1  2260.6  2280.1  94279
4   20150218    930     2271.6  2277.95 2271    2276.1  65932
5   20150218    940     2270.35 2275    2268.2  2271.6  53595
6   20150218    950     2270.65 2271.2  2265.55 2270.5  34546
7   20150218    1000    2274.15 2274.25 2268.65 2270.6  35414
8   20150218    1010    2270.1  2274.9  2267.1  2274.25 37334

1 个答案:

答案 0 :(得分:1)

你可以尝试

df$DateTime <- as.POSIXct(sprintf('%08d %04d', df$DATE, df$TIME),
                               format ='%Y%m%d %H%M')
df1 <- df[-(1:2)]
head(df1,2)
#    CLOSE HIGH     LOW    OPEN VOLUME            DateTime
#1 2283.85 2284 2275.60 2275.60  48309 2015-02-16 15:20:00
#2 2282.00 2284 2273.15 2283.85 108856 2015-02-16 15:30:00

更新

如果您需要转换为xts,而不是创建新列,我们可以删除不需要的列(df[-(1:2)])并指定order.by作为日期时间向量( 'indx')

library(xts)
indx <- as.POSIXct(sprintf('%08d %04d', df$DATE, df$TIME),
                               format ='%Y%m%d %H%M')
xt1 <- xts(df[-(1:2)], order.by=indx)