【问题标题】:Create Date from this format:YYYYddmm in R从此格式创建日期:YYYYddmm in R
【发布时间】:2015-04-16 08:33:24
【问题描述】:

我对日期格式有疑问。我的输入数据如下所示:

73;2013120101;   7;  38;   0.1;  99.0;eor

第二栏2013120101 是我的日期栏。 我想导入它以在 R 中处理它,最终它应该看起来像

1969 01 02 00:00

这边

 dwd <- read.csv(file="testdwd.txt",header=T,sep=";",stringsAsFactors=F)
 dwd[,1] <- ymd(dwd[,1])

产量 1982-12-01,但我不知道如何完成其​​余的工作。

【问题讨论】:

  • 你的意思是2013 12 01 01:00
  • 如果您“想在 R 中处理它”,您可能应该将其转换为 POSIXct(例如,使用 as.POSIXct)。如果您需要特定的输出格式(例如,将计算结果保存到文本文件时),您可以使用strftime

标签: r datetime zoo posixct lubridate


【解决方案1】:

你可以试试strptimeformat,例子

d <- "2013120121"
x <- strptime(x=d, format = "%Y%m%d%H")
format(x, "%Y %m %d %k:%M")
## [1] "2013 12 01 21:00" # which gives the desired output

%Y代表年份,%m代表月份,%d代表白天,%k代表小时,%M代表分钟。

【讨论】:

    【解决方案2】:

    基础函数strptime 正确处理:

    > dwd <- read.csv(textConnection("73;2013120101;   7;  38;   0.1;  99.0;eor"),
                      sep=";",stringsAsFactors=F,head=F)
    > strptime(dwd[2],"%Y%m%d%H")
                       V2 
    "2013-12-01 01:00:00" 
    

    【讨论】:

    • 这不是想要的输出。
    • 那么想要的输出是什么?
    • 据我了解,2013 12 01 01:00,但需要 OP 澄清。
    • @Pascal 我认为 OP 不介意“破折号”-,因为他能够使用 - 而不是 HH:MM 获取日期格式的 YMD。
    • @zx8754 根据 OP,“最终它应该看起来像 1969 01 02 00:00”。
    【解决方案3】:

    使用润滑

    require("lubridate")
    
    #dummy data
    x <- read.table(text="73;2013120101;   7;  38;   0.1;  99.0;eor",sep=";")
    
    #reformat
    ymd_hms(paste0(x$V2,"0000"))
    
    #output
    #[1] "2013-12-01 01:00:00 UTC"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2018-06-08
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多