结合datetime和timezone列以获取日期时间对象

时间:2014-08-21 09:36:35

标签: r datetime timezone

我的数据集中有两列:DATE_TIME和TZ,它们都是字符串。我想结合这两个来获得一个合适的数据对象。

> df
        DATE_TIME TIME_ZONE
1  4/18/1950 0130       CST
2  4/18/1950 0145       CST
3  2/20/1951 1600       CST
4   6/8/1951 0900       CST
5 11/15/1951 1500       CST
6 11/15/1951 2000       CST

这是我尝试过的,但它没有给我预期的结果:

convertToDateTime <- function(dtString, tz) {
  strptime(dtString, tz = tz, "%m/%d/%Y %H%M")
}

df$DATETIME <- Map(convertToDateTime, df$DATE_TIME, df$TIME_ZONE)
class(df$DATETIME) # -> list

显然,此地图将convertToDateTime的结果转换为列表。我应该使用不同的功能吗?

更新:好的,那是炫耀,我缺乏R skils :(。修正了,根据LukeA的评论如下:

convertToDateTime <- function(dtString, tz) {
  strftime(strptime(dtString, tz=tz, format="%m/%d/%Y %H%M"), tz=tz)
}

df$DATETIME <- mapply(convertToDateTime, df$DATE_TIME, df$TIME_ZONE)

1 个答案:

答案 0 :(得分:0)

正如我的问题更新中所述。问题解决如下:

convertToDateTime <- function(dtString, tz) {
  strftime(strptime(dtString, tz=tz, format="%m/%d/%Y %H%M"), tz=tz)
}

df$DATETIME <- mapply(convertToDateTime, df$DATE_TIME, df$TIME_ZONE)