SAS 怎么用指定特殊项进行计算
答案:1 悬赏:70 手机版
解决时间 2021-03-05 00:04
- 提问者网友:
- 2021-03-04 12:34
SAS 怎么用指定特殊项进行计算
最佳答案
- 五星知识达人网友:青尢
- 2021-03-04 13:06
id编号为0102的数据最后一列的1我不知道是什么,录入数据的时候我给删去了,那个......符号我也删去了,最后输出的数据变量我没有做细致的删减,你可以根据需要做适当的增减。
值得注意的是,在你给出的数据中,日期是同一天,所以这个程序运行的时间变量可以直接进行减法计算,如果不是同一天,那么需要将日期和时间变量合并,这样才能计算出时间的增量,否则在两个不同日期的同一时间点增量为0。
最后但愿你知道的是,sas对日期型变量计算时,实际上是将日期型变量转换为数值型变量,因为数值才能进行加减运算,所以sas对日期型变量的储存数据为数值,因为我没有对程序进行格式转换,所以test数据集和temp数据集储存的数据格式默认为数值型,数值型变量无法直观看到具体的差值是多少,如果需要转换为日期型变量,可以输出对diff进行time5.的格式转译。
data test;
input id $ name $ group sleep freq @31 date yymmdd10. @44 time time5.;
cards;
0020 ccf 1 0 1 2012/1/24 10:18
0020 ccf 1 0 2 2012/1/24 10:33
0020 ccf 1 0 3 2012/1/24 10:55
0020 ccf 1 0 4 2012/1/24 11:10
0102 lwf 1 0 1 2013/6/6 9:35
0102 lwf 1 0 2 2013/6/6 9:36
0102 lwf 1 0 3 2013/6/6 9:51
0102 lwf 1 0 4 2013/6/6 10:11
0102 lwf 1 0 5 2013/6/6 10:26
0102 lwf 1 0 6 2013/6/6 10:45
0173 hxj 1 0 1 2012/12/6 9:28
0173 hxj 1 0 2 2012/12/6 9:43
0173 hxj 1 0 3 2012/12/6 10:05
0173 hxj 1 0 4 2012/12/6 10:21
0173 hxj 1 0 5 2012/12/6 10:42
0173 hxj 1 0 6 2012/12/6 10:57
0173 hxj 1 0 7 2012/12/6 11:25
0173 hxj 1 0 8 2012/12/6 11:47
;
run;
data temp;
set test;
by id freq;
retain first;
if first.id then first=time;
if last.id then do;
diff=time-first;
output;
end;
run;
值得注意的是,在你给出的数据中,日期是同一天,所以这个程序运行的时间变量可以直接进行减法计算,如果不是同一天,那么需要将日期和时间变量合并,这样才能计算出时间的增量,否则在两个不同日期的同一时间点增量为0。
最后但愿你知道的是,sas对日期型变量计算时,实际上是将日期型变量转换为数值型变量,因为数值才能进行加减运算,所以sas对日期型变量的储存数据为数值,因为我没有对程序进行格式转换,所以test数据集和temp数据集储存的数据格式默认为数值型,数值型变量无法直观看到具体的差值是多少,如果需要转换为日期型变量,可以输出对diff进行time5.的格式转译。
data test;
input id $ name $ group sleep freq @31 date yymmdd10. @44 time time5.;
cards;
0020 ccf 1 0 1 2012/1/24 10:18
0020 ccf 1 0 2 2012/1/24 10:33
0020 ccf 1 0 3 2012/1/24 10:55
0020 ccf 1 0 4 2012/1/24 11:10
0102 lwf 1 0 1 2013/6/6 9:35
0102 lwf 1 0 2 2013/6/6 9:36
0102 lwf 1 0 3 2013/6/6 9:51
0102 lwf 1 0 4 2013/6/6 10:11
0102 lwf 1 0 5 2013/6/6 10:26
0102 lwf 1 0 6 2013/6/6 10:45
0173 hxj 1 0 1 2012/12/6 9:28
0173 hxj 1 0 2 2012/12/6 9:43
0173 hxj 1 0 3 2012/12/6 10:05
0173 hxj 1 0 4 2012/12/6 10:21
0173 hxj 1 0 5 2012/12/6 10:42
0173 hxj 1 0 6 2012/12/6 10:57
0173 hxj 1 0 7 2012/12/6 11:25
0173 hxj 1 0 8 2012/12/6 11:47
;
run;
data temp;
set test;
by id freq;
retain first;
if first.id then first=time;
if last.id then do;
diff=time-first;
output;
end;
run;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯