0

我不知道如何将 R 中的矩阵行从字符转换为 POSIXt 或其他类似的类。这些是我的字符行:

  [1] "2015.07.06 13.41.00.033" "2015.07.06 13.40.00.033" "2015.07.06 13.39.00.033"
  [4] "2015.07.06 13.38.00.033" "2015.07.06 13.37.00.007" "2015.07.06 13.36.00.007"
  [7] "2015.07.06 13.35.00.007" "2015.07.06 13.34.00.007" "2015.07.06 13.33.00.007"
 [10] "2015.07.06 13.32.00.007" "2015.07.06 13.31.00.007" "2015.07.06 13.30.00.007"
 [13] "2015.07.06 13.29.00.007" "2015.07.06 13.28.00.007" "2015.07.06 13.27.00.007"
 [16] "2015.07.06 13.26.00.007" "2015.07.06 13.25.00.007" "2015.07.06 13.24.00.007"
 [19] "2015.07.06 13.23.00.007" 
4

2 回答 2

1

与列表或 data.frame 不同,矩阵只能包含一种类型的数据。此外,矩阵(通常)仅包含原子类型*,这意味着您的POSIXct对象将被转换为数字。

> matrix(Sys.time())
           [,1]
[1,] 1436191385

所以你的问题的答案是,“你不能用矩阵做到这一点。” 请改用 data.frame,或在您的问题中提供更多详细信息,说明您实际上试图通过这样做来解决什么问题。

*矩阵可以包含列表元素,这些元素不是原子对象,但这是一种非常不寻常的情况,可能不是用户想要的。

于 2015-07-06T14:10:07.887 回答
0

你可以试试

options(digits.secs=6)
times <- strptime(times,"%Y.%m.%d %H.%M.%OS", tz= " ")
#> times
# [1] "2015-07-06 13:41:00.033" "2015-07-06 13:40:00.033" "2015-07-06 13:39:00.033" "2015-07-06 13:38:00.033" "2015-07-06 13:37:00.007"
# [6] "2015-07-06 13:36:00.007" "2015-07-06 13:35:00.007" "2015-07-06 13:34:00.007" "2015-07-06 13:33:00.007" "2015-07-06 13:32:00.007"
#[11] "2015-07-06 13:31:00.007" "2015-07-06 13:30:00.007" "2015-07-06 13:29:00.007" "2015-07-06 13:28:00.007" "2015-07-06 13:27:00.007"
#[16] "2015-07-06 13:26:00.007" "2015-07-06 13:25:00.007" "2015-07-06 13:24:00.007" "2015-07-06 13:23:00.007"
#> class(times)
#[1] "POSIXlt" "POSIXt"

数据

times <-c("2015.07.06 13.41.00.033", "2015.07.06 13.40.00.033", "2015.07.06 13.39.00.033",
"2015.07.06 13.38.00.033", "2015.07.06 13.37.00.007", "2015.07.06 13.36.00.007",
"2015.07.06 13.35.00.007", "2015.07.06 13.34.00.007", "2015.07.06 13.33.00.007",
"2015.07.06 13.32.00.007", "2015.07.06 13.31.00.007" ,"2015.07.06 13.30.00.007",
"2015.07.06 13.29.00.007", "2015.07.06 13.28.00.007", "2015.07.06 13.27.00.007",
"2015.07.06 13.26.00.007", "2015.07.06 13.25.00.007", "2015.07.06 13.24.00.007",
"2015.07.06 13.23.00.007")

如果您想将这些 POSIXt 条目用于数据的时间序列,一种方便的方法可能是将数据帧转换为xts对象。

这可以实现,例如,通过

library(xts)
my_xts <- xts(times, data) 

其中data是存储为数值的观测值,对应于上述时间点序列。

希望这可以帮助。

于 2015-07-06T14:36:27.550 回答