R从一年中的某一天、原点和分钟构造日期时间



我有一个大的csv文件,第一列是一年中的哪一天,第二列是以分钟为单位的时间(即00:00):测量年份=2010

1,0,2.701,104.3,5.02,2.985,13.71,645.97,1018.9,6.249,4.166,.501 
1,1,2.701,104.3,5.02,2.985,13.71,645.97,1018.9,6.249,4.166,.501 
1,2,2.737,104.3,5.228,3.006,13.71,645.97,1018.9,6.249,4.166,.518
1,3,2.805,104.3,4.958,3.027,13.71,645.97,1018.8,7.08,3.749,.767
1,4,2.821,104.3,4.999,3.006,13.71,645.97,1018.9,7.08,4.166,.79
1,5,2.847,104.2,5.208,3.048,13.72,645.97,1018.9,6.249,4.166,.567
1,6,2.881,104.2,4.853,3.027,13.71,645.97,1018.7,6.666,4.166,.688

我想使用R中的datetime类合并第1列和第2列,这样我就可以得到一列从2010-01-01 00:00:00 开始

干杯,Navin

从您提供的示例数据来看,第二列的通用格式并不明显。特别是,如何表示不在一天的第一个小时(例如凌晨1点01分)的时间?

根据第二列的格式,您应该能够拼凑出如下内容:

d <- data.frame(day=1, minute=1:10)
s <- paste(2010, d$day, d$minute, sep="-")
strptime(s, format="%Y-%j-%M")
#  [1] "2010-01-01 00:01:00" "2010-01-01 00:02:00" "2010-01-01 00:03:00"
#  [4] "2010-01-01 00:04:00" "2010-01-01 00:05:00" "2010-01-01 00:06:00"
#  [7] "2010-01-01 00:07:00" "2010-01-01 00:08:00" "2010-01-01 00:09:00"
# [10] "2010-01-01 00:10:00"

这里,%j表示"一年中的哪一天是十进制数(001-366)",如?strptime所示。(有关支持转换为R的POSIXt日期时间类和从R的CCD-3日期时间类型转换的许多其他时间格式的描述,请参阅同一帮助文件)。

最新更新