【问题标题】:Change from date and hour format to numeric format从日期和小时格式更改为数字格式
【发布时间】:2012-01-03 03:56:08
【问题描述】:

我在 R 中工作,我需要更改格式的列

9/27/2011  3:33:00 PM 

转换为值格式。在 Excel 中我可以使用函数value(),但我不知道如何在 R 中使用。

我的数据如下所示:

9/27/2011 15:33 a   1   5   9
9/27/2011 15:33 v   2   6   2
9/27/2011 15:34 c   3   7   1

【问题讨论】:

  • 要获得完整的答案,请将dput(yourData) 的输出提供给我们,以便我们可以准确地重新创建您的数据对象。给出的答案将根据列类型而有所不同,因为它当前可能是一个因素或字符。如果它实际上已经是日期或 POSIX 列,我认为像 as.numeric() 这样的东西应该可以工作。例如:>as.numeric(Sys.time()) [1] 1321895128

标签: r date time


【解决方案1】:

这对我很有用:

> test=as.POSIXlt("09/13/2006", format="%m/%d/%Y")
> test
[1] "2006-09-13"
> 1900+test$year
[1] 2006
> test$yday
[1] 255
> test$yday/365
[1] 0.6986301
> 1900+test$year+test$yday/366
[1] 2006.697

如果您需要 Excel 中的日期数字,您可以使用类似的方法。

【讨论】:

    【解决方案2】:

    要将字符串转换为 R 日期格式,请使用 as.POSIXct - 然后您可以使用 as.numeric 将其强制转换为数值:

    > x <- as.POSIXct("9/27/2011  3:33:00 PM", format="%m/%d/%Y  %H:%M:%S %p")
    > x
    [1] "2011-09-27 03:33:00 BST"
    > as.numeric(x)
    [1] 1317090780
    

    您获得的值表示自任意日期以来的秒数,通常是 1970 年 1 月 1 日。请注意,这与 Excel 不同,其中日期存储为自任意日期以来的天数(1/1/1900,如果我没记错的话 - 我尽量不再使用 Excel。)

    欲了解更多信息,请参阅?DateTimeClasses

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-04
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多