gpt4 book ai didi

excel - 带有频率或百分比的开始时间和结束时间

转载 作者:行者123 更新时间:2023-12-04 21:05:01 25 4
gpt4 key购买 nike

我有一个数据,其中包含开始时间、结束时间、停留时间(结束开始)和主题数。我正在尝试创建一个图表、线条、条形图或直方图,以显示特定时间有多少受试者。因此,水平轴的时间为 00:00 到 24:00,垂直轴的时间为受试者总数或百分比。

Start    End    Subject    Stay
01:00 02:00 1 01:00
01:00 01:45 1 00:45
02:00 21:00 1 19:00
03:10 14:10 1 11:00

数据集很大,我正在使用 SAS Enterprise Guide 和 excel 创建图表。

我已经尝试过 PROC GPLOT,但它没有提供我想要的东西。对折线图和条形图(堆叠)做了同样的事情,但做不到。我不确定是否有更简单的方法。这是我在 SAS EG 中使用的代码。也尝试在 excel 中创建堆积条形图。
PROC GPLOT DATA=Input;
PLOT Stay * start /
AREAS=1
FRAME VAXIS=AXIS1
HAXIS=AXIS2
;

RUN; QUIT;

请帮忙。

谢谢

最佳答案

您需要转换您的数据以为您正在查看的每个时间段创建一行(例如,如果您想显示每小时在任何时间点出现的人数)。

你可以这样做:

data want;
set have;
do time=intnx('Hour',start,0) to end by 3600; *start at top of current hour, increment by 1 hour (3600 seconds);
output;
end;
run;

然后您可以绘制 time条形图中的变量。

对于其中一些方法(例如 ETS),您的数据可能是一个问题,因为您使用的是重叠时段 - 您的主题 1 有 4 个停留时间严重重叠。如果这些是不同的日子,您可能希望为主题添加日期标记以使其独一无二。

使用您的数据的示例:
data have;
input Start :time5. End :time5. Subject Stay :time5.;
format start end stay time5.;
datalines;
01:00 02:00 1 01:00
01:00 01:45 2 00:45
02:00 21:00 2 19:00
03:10 14:10 3 11:00
;;;;
run;

data want;
set have;
do hour_mark = intnx('Hour',start,0) to end by 3600;
output;
end;
keep hour_mark subject;
format hour_mark time5.;
run;

proc sgplot data=want;
vbar hour_mark;
run;

您可以使用更有趣的数据集运行相同的示例:
data have;
if _n_=1 then call streaminit(7);
do subject = 1 to 100;
start=floor(rand('Uniform')*86000);*almost all day, but make sure we have a bit of room for end;
end =floor(rand('Uniform')*(86400-start))+start;
stay=end-start;
output;
end;
format start end stay time5.;
run;

然后使用相同的 WANT 和 SGPLOT 代码。

关于excel - 带有频率或百分比的开始时间和结束时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24619887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com