【问题标题】:Converting a matrix of unix timestamps into human times in R在 R 中将 unix 时间戳矩阵转换为人类时间
【发布时间】:2018-07-30 15:56:13
【问题描述】:

我有一个 14 x 2 人类时间矩阵,称为 TH,作为 R 代码的输出;但是,TH 的输出如下:

 [1] "2018-01-24 00:00:00 CET" "2018-01-24 00:24:34 CET" "2018-01-24 08:32:22 CET"
 [4] "2018-01-24 08:42:12 CET" "2018-01-24 09:08:24 CET" "2018-01-24 11:41:36 CET"
 [7] "2018-01-24 12:29:15 CET" "2018-01-24 12:31:47 CET" "2018-01-24 12:33:28 CET"
[10] "2018-01-24 14:32:03 CET" "2018-01-24 15:37:48 CET" "2018-01-24 16:53:36 CET"
[13] "2018-01-24 17:07:18 CET" "2018-01-24 21:10:23 CET" "2018-01-24 00:24:27 CET"
[16] "2018-01-24 08:32:15 CET" "2018-01-24 08:42:05 CET" "2018-01-24 09:08:13 CET"
[19] "2018-01-24 11:41:24 CET" "2018-01-24 12:29:08 CET" "2018-01-24 12:31:41 CET"
[22] "2018-01-24 12:33:11 CET" "2018-01-24 14:31:40 CET" "2018-01-24 15:37:25 CET"
[25] "2018-01-24 16:53:29 CET" "2018-01-24 17:07:11 CET" "2018-01-24 21:10:05 CET"
[28] "2018-01-25 00:00:00 CET"

我希望将 TH 视为一个矩阵,因为每一行都包含某个事件的开始时间和结束时间。如何确保 TH 以矩阵形式显示,而不是以我得到的形式显示?

在我的代码中,TS 是一个 14 x 2 的 unix 时间戳矩阵,如下所示:

    > TS
              [,1]         [,2]
 [1,] 1.516748e+12 1.516750e+12
 [2,] 1.516750e+12 1.516779e+12
 [3,] 1.516779e+12 1.516780e+12
 [4,] 1.516780e+12 1.516781e+12
 [5,] 1.516781e+12 1.516790e+12
 [6,] 1.516790e+12 1.516793e+12
 [7,] 1.516793e+12 1.516794e+12
 [8,] 1.516794e+12 1.516794e+12
 [9,] 1.516794e+12 1.516801e+12
[10,] 1.516801e+12 1.516805e+12
[11,] 1.516805e+12 1.516809e+12
[12,] 1.516809e+12 1.516810e+12
[13,] 1.516810e+12 1.516825e+12
[14,] 1.516825e+12 1.516835e+12

接下来我申请了:

TH = as.POSIXct(TS/1000,origin="1970-01-01",tz="Europe/Paris")

获取TH,但总是以上述形式输出。任何帮助将不胜感激!

【问题讨论】:

  • 你的意思是data.frame而不是matrix
  • 请发送您的原始矩阵样本
  • matrix(TH, ncol=2) ?
  • 矩阵只能存储数值。 Timestamp 是一个日期/时间对象,因此不是数字
  • @chinsoon12,谢谢,我的错,是的,确实是一个数据框。

标签: r timestamp unix-timestamp timestamp-with-timezone


【解决方案1】:

假设您的向量如下所示:

temp <- c("2018-01-24 00:00:00 CET", "2018-01-24 00:24:34 CET", "2018-01-24 08:32:22 CET",
      "2018-01-24 08:42:12 CET", "2018-01-24 09:08:24 CET", "2018-01-24 11:41:36 CET",
      "2018-01-24 12:29:15 CET", "2018-01-24 12:31:47 CET", "2018-01-24 12:33:28 CET",
      "2018-01-24 14:32:03 CET", "2018-01-24 15:37:48 CET", "2018-01-24 16:53:36 CET",
      "2018-01-24 17:07:18 CET", "2018-01-24 21:10:23 CET", "2018-01-24 00:24:27 CET",
      "2018-01-24 08:32:15 CET", "2018-01-24 08:42:05 CET", "2018-01-24 09:08:13 CET",
      "2018-01-24 11:41:24 CET", "2018-01-24 12:29:08 CET", "2018-01-24 12:31:41 CET",
      "2018-01-24 12:33:11 CET", "2018-01-24 14:31:40 CET", "2018-01-24 15:37:25 CET",
      "2018-01-24 16:53:29 CET", "2018-01-24 17:07:11 CET", "2018-01-24 21:10:05 CET",
      "2018-01-25 00:00:00 CET")

temp <- (lubridate::ymd_hms(temp, tz = "CET"))

然后你可以先将其转换为字符向量,然后再将其转换为矩阵:

mat <- matrix(as.character(temp), ncol = 2)
mat

现在,如果您想进行一些日期/时间操作,您需要将其设为数据框

df <- data.frame(mat)

然后你可以转换日期类型:

df$X1 <- lubridate::ymd_hms(df$X1, tz = "CET")
df$X2 <- lubridate::ymd_hms(df$X2, tz = "CET")

【讨论】:

  • 谢谢你,mat 工作就像一个魅力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多