Excel 时间间隔内的数据分析
我正在研究我最近收集的大量数据。我想知道一天中什么时候发生了用户活动。以下是少量的数据集快照: 我应用以下代码来了解登录活动的时间间隔Excel 时间间隔内的数据分析,excel,matlab,datetime,group-by,time-series,Excel,Matlab,Datetime,Group By,Time Series,我正在研究我最近收集的大量数据。我想知道一天中什么时候发生了用户活动。以下是少量的数据集快照: 我应用以下代码来了解登录活动的时间间隔 =SUMPRODUCT(--(HOUR(I2:I185143)>=K4*24),--(HOUR(I2:I185143)<L4*24)) =SUMPRODUCT(-HOUR(I2:I185143)>=K4*24),-(HOUR(I2:I185143)如果使用数组函数Frequency()这在excel中相对简单 应采取的一些步骤: 我假设您希望按每
=SUMPRODUCT(--(HOUR(I2:I185143)>=K4*24),--(HOUR(I2:I185143)<L4*24))
=SUMPRODUCT(-HOUR(I2:I185143)>=K4*24),-(HOUR(I2:I185143)如果使用数组函数Frequency()这在excel中相对简单
应采取的一些步骤:
我假设您希望按每天的时间进行排序
因此,时间列是数据数组,频率的第一个参数(查看excel帮助)
对于bin数据,您必须获得一个开头带有开始时间的
添加以下垃圾箱,每个垃圾箱少于10分钟(=1/24/6),使其成为一天中的第六个小时
一整天总共有144个垃圾箱
然后选择bin旁边的列段,并使用=Frequency(data\u array,bin\u array)对其进行编辑,不要忘记使用输入它。好的,我在下面的屏幕截图中得到了答案
这里有一个可能的MATLAB解决方案
1) 假数据
为了测试我的代码,我首先必须生成一些与实际数据相似的假数据。当处理真实数据时,您可以跳过这一部分
len = 50;
%# random dates inbetween these two
dt_start = datenum('2013-06-22 19:17:00');
dt_end = datenum('2013-06-22 19:23:00');
dt = sort(dt_start + rand(len,1)*(dt_end-dt_start));
%# create the columns
ID = repmat(int32(104885), [len 1]);
Date = cellstr(datestr(dt, 'mm/dd/yyyy'));
Time = cellstr(datestr(dt, 'HH:MM:SS'));
EE = rand(len,1);
%# combine columns into a cell array
C = [num2cell(ID), Date, Time, num2cell(EE)];
%# create a "table" for convenience, and export to CSV file
t = cell2table(C, 'VariableNames',{'ID', 'Date', 'Time', 'EE'})
writetable(t, 'data.csv')
%# cleanup
clear len dt_start dt_end dt ID Date Time EE C t
以下是我为本例生成的数据摘录:
t =
ID Date Time EE
______ ____________ __________ _________
104885 '06/22/2013' '19:17:19' 0.95808
104885 '06/22/2013' '19:17:22' 0.72305
104885 '06/22/2013' '19:17:31' 0.86481
104885 '06/22/2013' '19:17:33' 0.52325
.
.
104885 '06/22/2013' '19:22:37' 0.5167
104885 '06/22/2013' '19:22:39' 0.53815
104885 '06/22/2013' '19:22:41' 0.27151
104885 '06/22/2013' '19:22:54' 0.37826
104885 '06/22/2013' '19:22:59' 0.51215
2) 时间间隔内的频率计数
我从CSV文件中读取数据,然后应用一个与链接到的文件中使用的过程类似的过程。在这种情况下,时间间隔长度是可以指定的参数(10分钟间隔、1小时等)
结果是:
freq =
'22-Jun-2013 19:16:00' [ 7]
'22-Jun-2013 19:18:00' [21]
'22-Jun-2013 19:20:00' [12]
'22-Jun-2013 19:22:00' [10]
我们在第一个时间间隔(19:16到19:18)发生了7个事件,在第二个时间间隔发生了21个事件,依此类推。您可以轻松调整代码以更改间隔长度。这里是另一个相关问题:
freq =
'22-Jun-2013 19:16:00' [ 7]
'22-Jun-2013 19:18:00' [21]
'22-Jun-2013 19:20:00' [12]
'22-Jun-2013 19:22:00' [10]