将时间转换为R中的字符

时间:2016-10-16 18:17:50

标签: r time

我从具有以下时间值的csv文件中读取了数据帧dtmn

在Excel中显示: 7/4/2014 13:08

当我在R中看到它时显示:

> x <- dtmn[2,1]
> x
[1] 7/4/2014
Levels: 0.547222222 7/4/2014 7/4/2014 13:08 788

我想将其转换为字符形式,并带有以下字符值:

"07/04/2014 13:08"

函数as.character.Posixt(dtmn[2,1])仅返回日期:[1] "7/4/2014" 但我也想把时间也包括在内。所以期望的输出可能如下所示: "07/04/2014 13:08"

请帮忙,

2 个答案:

答案 0 :(得分:1)

解决此问题的简单方法是使用readxl包。假设您有一个名为excel_file.xlsx的Excel文件,并且您的数据列在Excel中格式化为日期:

date_from_excel
07/04/14 13:08
07/04/14 21:30
07/12/14 10:18

library(readxl)

df = read_excel(path=paste0("/<path-to-the-file>/",'excel_file.xlsx'), sheet=1, col_names=T, col_types=c('date') )
df = as.data.frame(df)
df$date_as_string = as.character(df$date_from_excel)

> df
  date_from_excel      date_as_string
1 2014-04-07 13:08:00 2014-04-07 13:08:00
2 2014-04-07 21:30:00 2014-04-07 21:30:00
3 2014-12-07 10:18:00 2014-12-07 10:18:00

> str(df)
'data.frame':   3 obs. of  2 variables:
 $ date_from_excel: POSIXct, format: "2014-04-07 13:08:00" "2014-04-07 21:30:00" ...
 $ date_as_string : chr  "2014-04-07 13:08:00" "2014-04-07 21:30:00" "2014-12-07 10:18:00"

答案 1 :(得分:0)

Rich Scriven的评论帮助我理解了这一点。我检查了班级和级别。

> class(dtmn[2,1])
[1] "factor"
> levels(dtmn[2,1])
[1] "0.547222222"    "7/4/2014"       "7/4/2014 13:08" "788" 

最后,将第三级称为角色:

> as.character(levels(dtmn[2,1])[3])
[1] "7/4/2014 13:08"