0

我有一个包含 2 列的数据集。第 1 列是从 2013 年午夜开始的小时数,第 2 列是数量。第 1 列考虑了从午夜开始的绝对小时数,因此不考虑日光节约。如何从我的数据生成第 3 列(日期)和第 4 列(小时)。

我的一个想法是将时间与格林威治标准时间相对应,然后将其改回美国东部时间。但我又在实施它时遇到了麻烦。

这就是我所拥有的数据:

Hours from 
midnight 2013     Quantity
28                  45
29                  74
30                  65
31                  14
36                  13
48                  4

这就是我想要的:

Hours from 
midnight 2013     Quantity                  Date                      Hour
28                  45                  1/2/2014               4     
29                  74                  1/2/2014               5
30                  65                  1/2/2014               6
31                  14                  1/2/2014               7
36                  13                  1/2/2014               12
48                  4                   1/2/2014               24
4

2 回答 2

1

我将在 matlab 2013a 中这样做:

minuit = [2014 01 01 00 00 00]
col3 = addtodate(datenum(minuit),28,'hour')

然后

datestr(col3,'HH') % for your Hour column
datestr(col3,'mm/DD/YYYY') % for your Date colum
于 2013-11-06T14:19:28.580 回答
0

好的,这就是我在 Octave 中的做法。MATLAB 中的语法可能略有不同,但思路是一样的:

>> hh = [28 29 30 31 36 48];
>> midnight = datenum(2014,1,1,0,0,0);
>> dates = datestr(midnight+hh/24,'mm/dd/yyyy')
dates =

01/02/2014
01/02/2014
01/02/2014
01/02/2014
01/02/2014
01/03/2014
>> hhs = (midnight+hh/24-datenum(2014,1,2,0,0,0))*24
hhs =

           4           5           6           7           12          24

我没有考虑日光节约。

于 2013-11-06T14:00:36.350 回答