R构建从日期,原点和分钟开始的日期时间

时间:2012-03-08 22:08:05

标签: 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开始获得一个单独的列

干杯, 纳文

1 个答案:

答案 0 :(得分:5)

根据您提供的示例数据,第二列的一般格式并不明显。特别是,在一天中的第一个小时(例如1:01 AM)没有出现的时间如何表示?

根据第二列的格式,您应该可以拼凑如下内容:

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日期时间类之间的转换的许多其他时间格式的说明,请参阅相同的帮助文件。)