1

我正在尝试将以下日期/时间字符串转换为动物园对象:

2004:071:15:23:41.87250

2004:103:15:24:15.35931

年:东:时:分:秒

日期/时间字符串存储在没有标题的数据框中。在 R 中解决这个问题的最佳方法是什么?

干杯!

根据 Gavin 的回答进行编辑:

# read in time series from CSV file; each entry as described above
timeSeriesDates <- read.csv("timeseriesdates.csv", header = FALSE, sep = ",")
# convert to format that can be used as a zoo object
timeSeriesDatesZ <- as.POSIXct(timeSeriesDates$V1, format = "%Y:%j:%H:%M:%S")
4

2 回答 2

7

以通常的方式将数据读入 R。您将拥有以下内容:

dats <- data.frame(times = c("2004:071:15:23:41.87250", "2004:103:15:24:15.35931"))
dats

这些可以通过以下方式转换为其中一个POSIXt类:

dats <- transform(dats, as.POSIXct(times, format = "%Y:%j:%H:%M:%S"))

或者

data$times <- as.POSIXct(dats$times, format = "%Y:%j:%H:%M:%S"))

然后可以在动物园对象中使用。有关参数?strftime中使用的占位符的详细信息,请参阅format;本质上%j是一年中的一天占位符。

为了做动物园位,我们会做,对实际时间序列使用一些虚拟数据

ts <- rnorm(2) ## dummy data
require(zoo)   ## load zoo
tsZoo <- zoo(ts, dats$times)

最后一行给出:

> tsZoo
2004:071:15:23:41.87250 2004:103:15:24:15.35931 
              0.3503648              -0.2336064

使用小数秒需要注意的一件事是 i) 使用浮点运算可能无法记录您所拥有的确切分数。此外,考虑到 R 中的选项值,R 可能不会显示完整的小数秒;digits.secs. 有关?options此特定选项以及如何更改它的更多信息,请参阅。

于 2012-06-06T20:11:33.893 回答
0

这是第一个字符串的注释示例:

R> s <- "2004:103:15:24:15.35931"
R> # split on the ":" and convert the result to a numeric vector
R> n <- as.numeric(strsplit(s, ":")[[1]])
R> # Use the year, hour, minute, second to create a POSIXct object
R> # for the first of the year; then add the number of days (as seconds)
R> ISOdatetime(n[1], 1, 1, n[3], n[4], n[5])+n[2]*60*60*24
[1] "2004-04-13 16:24:15 CDT"
于 2012-06-06T20:11:48.620 回答