我以前有过 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.zoo
和 ISOdatetime
像这样: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/