首先,让我说我一直希望在单独的列中发布日期和时间,在 R 中转换为日期时间,但它不适用于这种情况。
我有一个包含多个测量值的 CSV 文件,从第 1 列到第 5 列,我有以下形式的数据戳:Year、DayOfYear、Hour、Minute、Second。类似这样的 var 名称dat:
Year Day Hour Min Sec. E1.S1 E1.S2 E1.S3 E1.S4 E1.S5 E1.S6 E1.S7 E1.S8 E2.S1 E2.S2 E2.S3 E2.S4 E2.S5
1 2003 241 0 1 5.87 0.296 0.394 0.657 0.427 0.362 0.559 0.460 0.460 0.526 0.362 0.362 0.493 0.460
2 2003 241 0 5 18.52 0.486 0.543 0.572 0.629 0.372 0.457 0.429 0.829 0.486 0.400 0.286 0.543 0.457
3 2003 241 0 10 10.65 0.514 0.629 0.371 0.657 0.457 0.657 0.429 0.429 0.314 0.400 0.286 0.286 0.343
4 2003 241 0 15 2.76 0.575 0.301 0.411 0.630 0.274 0.466 0.466 0.548 0.438 0.329 0.438 0.493 0.301
5 2003 241 0 20 7.06 0.329 0.274 0.657 0.329 0.521 0.247 0.356 0.246 0.411 0.356 0.438 0.520 0.356
6 2003 241 0 25 11.35 0.486 0.314 0.343 0.372 0.314 0.343 0.457 0.343 0.257 0.343 0.229 0.543 0.372
我需要的是在一个时间戳字段中“加入”所有这 5 个日期字段,以便我可以正确绘制数据并在 R 中使用它。
我查看了ISOdatetime函数,但我无法让它工作(而且它似乎没有 dayOfYear 字段)。我还查看了POSIXlt并尝试了类似的方法:
test = within(dat, datetime <- as.POSIXlt(paste(Year, Day, Hour, Min, Sec.),
format = "%Y %D %H %M %S"))
但我得到的只是一个空的日期时间字段附加到我的数据框。
有任何想法吗?
编辑:
问题出在 dayOfYear 格式字段句柄中,正如下面帖子中指出的正确答案。我需要使用 %j 而不是 %D ,这足以获得日期时间的列。由于 POSIXlt 似乎只使用整数秒,我更正了秒数:
teste = within(dat, datetime <- as.POSIXlt(paste(Year, Day, Hour, Min, round(Sec.)),
format = "%Y %j %H %M %S"))
谢谢你们!