我的数据框的时间戳为字符类型,格式为dd-mm-yyyy hh:mm
,
例如:
"05-02-2018 06:30"
我需要mm-dd-yyyy hh:mm
格式的输出,即:
"02-05-2018 06.30"
我尝试使用函数mdy()和as.POSIXct
的lubridate库
但它不适用于所有记录 -
几乎没有投掷警告信息"failed to parse."
和
它主要适用于 日是>的日期。 12 ,例如:
"19-06-2017 16:30"
"22-10-2017 11:45"
"14-09-2017 16:00"
答案 0 :(得分:1)
Lubridate的dmy_hms
功能有效。
方法1:
library(lubridate)
dts <- c("19-06-2017 16:30" ,"22-10-2017 11:45", "14-09-2017 16:00")
dts <- dmy_hms(dts)
print(dts)
[1] "19-06-2017 16:30" "22-10-2017 11:45" "14-09-2017 16:00"
方法2:
library(lubridate)
dts <- c("19-06-2017 16:30" ,"22-10-2017 11:45", "14-09-2017 16:00")
dts <- fast_strptime(dts, format = '%d-%m-%Y %H:%M')
print(dts)
[1] "2017-06-19 16:30:00 UTC" "2017-10-22 11:45:00 UTC" "2017-09-14 16:00:00 UTC"
答案 1 :(得分:1)
使用?strptime()
显示帮助。在帮助文件中,有一个格式属性列表,您必须在使用strptime()
时指定:
对您的问题最重要的是:
%d 十进制数字(01-31)。
%H 小时数十进制数(00-23)。作为一个特殊的异常,如24:00:00接受输入,因为ISO 8601允许这些。
%米 月份为十进制数字(01-12)。
%M 分钟为十进制数(00-59)。
%Y 与世纪的一年。请注意,虽然原始公历中没有零,但ISO 8601:2004将其定义为有效(解释为1BC):请参阅https://en.wikipedia.org/wiki/0_(year)。请注意,标准还规定,其日历中的1582年之前的年份应仅在有关各方同意的情况下使用。
字符串的一部分也是Seperator。在你的情况下&#34; - &#34;。
然后您可以使用strptime()和format()来交换月和日。使用您的示例:
dates <- c( "19-06-2017 16:30" ,"22-10-2017 11:45", "14-09-2017 16:00")
dates <- strptime(dates, format="%d-%m-%Y %H:%M")
dates_changed <- format(dates, "%m-%d-%Y %H:%M")
答案 2 :(得分:0)