我以前有过 matlab 的经验,但对 R 很陌生。我遇到的基本问题是这样的 -

我有一个包含 10 列的数据。前 6 列对应于年、月、日、小时、分钟和秒。

E.g data_example =
2013 6 15 11 15 0 ...
2013 6 15 11 20 0 ...
2013 6 15 11 25 0 ...

在用于将日期作为数字处理的 matlab 中,我曾经使用 datenum(data_example(:,1:6)) 轻松计算它

但在 R 中,获得 6 列类似数字表示的最佳方法是什么。

最佳答案

这里有一些替代方案。他们都使用 ISOdatetime :

1) 假设 DF 是你的数据框,试试 ISOdatetime 像这样:

DF$datetime <- ISOdatetime(DF[[1]], DF[[2]], DF[[3]], DF[[4]], DF[[5]], DF[[6]])

2) 或像这样:
DF$datetime <- do.call(ISOdatetime, setNames(as.list(DF[1:6]), NULL))

3a) 如果这是一个适合动物园的时间序列(不同的时间和所有数字),那么我们可以在动物园包中使用 read.zooISOdatetime 像这样:
library(zoo)
z <- read.zoo(DF, index = 1:6, FUN = ISOdatetime)

3b) 或使用 read.zoo 从文件或字符串中读取(后者显示在此处):
# sample input lines
Lines <- "2013 6 15 11 15 0  1
2013 6 15 11 20 0 2
2013 6 15 11 25 0 3
"

library(zoo)
z <- read.zoo(text = Lines, index = 1:6, FUN = ISOdatetime)

这给出了这个动物园系列:
> z
2013-06-15 11:15:00 2013-06-15 11:20:00 2013-06-15 11:25:00
                  1                   2                   3

关于r - R编程中datenum的等价物,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17296290/

10-12 17:47