【问题标题】:Convert time to character in R将时间转换为R中的字符
【发布时间】:2016-10-16 18:17:50
【问题描述】:

我从具有以下时间值的 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"

请帮忙,

【问题讨论】:

  • 我认为你必须先问问自己,你是如何获得这些混乱数据的。我会回溯并尝试解决该问题,然后转换为日期时间会容易得多。
  • 数据框 dtmn 来自一个 excel csv 文件,我在 R 中读取它。在 excel 中它看起来像这样“7/4/2014 1:08:00 PM”。我认为 R 对它做了一些事情,并以某种我不理解的方式对其进行了解释。但就我的目的而言,我只需要它作为字符值。

标签: r time


【解决方案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"

【讨论】:

    【解决方案2】:

    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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 2016-09-04
      • 2022-07-06
      • 2015-05-20
      相关资源
      最近更新 更多