将矩阵的rownames从字符转换为POSIX

时间:2015-07-06 14:00:17

标签: r date posixct posixlt

我不知道如何将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" 

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分: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是观察值,存储为数值,与上述时间点序列相对应。

希望这有帮助。