【问题标题】:Converting time on time series在时间序列上转换时间
【发布时间】:2013-01-08 14:59:38
【问题描述】:

我正在读取降水时间序列的csv文件,问题是时间是00:00

head(C1)
            fecha precip
1      09/04/2012      0
2 09/04/2012 0:05      0
3 09/04/2012 0:10      0
4 09/04/2012 0:20      0
5 09/04/2012 0:25      0
6 09/04/2012 0:30      0

我正在尝试获取一个动物园对象,但如果我将时间更改为 POSIXct 或 POSIXlt:

C1$fecha <- as.POSIXct(C1$fecha, format="%d/%m/%Y %k:%M")

我在有问题的日期得到 NA。

head(C1)
                fecha precip
1                <NA>      0
2 2012-04-09 00:05:00      0
3 2012-04-09 00:10:00      0
4 2012-04-09 00:20:00      0
5 2012-04-09 00:25:00      0
6 2012-04-09 00:30:00      0

对此有任何提示吗?谢谢

【问题讨论】:

  • 你是如何阅读文件的?
  • 我正在使用 read.csv 因为我必须对进程进行一些转换。

标签: r time-series zoo posixct


【解决方案1】:

一种解决方案是找到较短的字符串,即没有时间信息。然后在转换为日期时间对象之前将0:00 连接到这些字符串中的每一个:

创建样本数据:

x <- c("09/04/2012", "09/04/2012 0:05", "09/04/2012 0:10", "09/04/2012 0:20", 
       "09/04/2012 0:25", "09/04/2012 0:30")

使用nchar() 标识长度仅为10 个字符的元素。然后paste()0:00这些元素:

index <- sapply(x, nchar) == 10
x[index] <- paste0(x[index], " 0:00")

as.POSIXct(x, format="%d/%m/%Y %k:%M")

[1] "2012-04-09 00:00:00 BST" "2012-04-09 00:05:00 BST" "2012-04-09 00:10:00 BST"
[4] "2012-04-09 00:20:00 BST" "2012-04-09 00:25:00 BST" "2012-04-09 00:30:00 BST"

【讨论】:

    【解决方案2】:

    如果 x 是您的日期和日期/时间向量,那么试试这个:

    as.POSIXct(paste(x, "00:00"), format = "%m/%d/%Y %k:%M")
    

    【讨论】:

      猜你喜欢
      • 2015-04-05
      • 2018-06-23
      • 2021-04-08
      • 1970-01-01
      • 2011-04-23
      • 2020-06-07
      • 2021-08-11
      • 2016-11-22
      • 1970-01-01
      相关资源
      最近更新 更多