全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5076 5
2018-11-04
例如:
Name date.            Sales
Xxxx    2/Aug/2018         1000
           10/Dec/2018         2000
            2/Jan/2018.          4000
最後結果為:
Xxxx 10/Dec/2018          2000 (total sales:7000)?
想了好久都不懂 跪求答案
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-11-4 17:08:04
至少有三种方法吧。

第一种方法先sort Name和descending date,再sort name,nodupkey吧。

第二种方法,proc means算出每个name下date的最大值,再merge回来。

第三种方法,用sql取date的最大值吧。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-4 17:17:24
謝謝你 我去試一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-4 17:38:12
逍遥梦蝶 发表于 2018-11-4 17:08
至少有三种方法吧。

第一种方法先sort Name和descending date,再sort name,nodupkey吧。
有是data step 的做法嗎?
我想是創兩個Name 再比較,最大的存留 而sale 也會跟着是日期最大的,
現在我用f _n_=1 then max=latest_date ;
else if latest_date > max then  max= latest_date ;
retain max;

但是max 的數值固定了,並不改變
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-4 22:22:28
你的数据name不是每一行都有,下面是先把name补齐,再直接取日期最大的一条
data a;
input name $ date ddmmyy10. sales;
format date date11.;
cards;
m  02082018 1000
.  10122018 2000
.  02012018 4000
;
run;
data b;
set a; if ~missing(name) then name1=name;
retain name1;
drop name;
rename name1=name;
run;
proc sort data=b out=c; by name date sales;run;
data d;
set c; by name date sales;
if last.name then output;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-4 22:23:16
data a;
input name $ date ddmmyy10. sales;
format date date11.;
cards;
m  02082018 1000
.  10122018 2000
.  02012018 4000
;
run;
data b;
set a; if ~missing(name) then name1=name;
retain name1;
drop name;
rename name1=name;
run;
proc sort data=b out=c; by name date sales; run;
data d;
set c; by name date sales;
if last.name then output;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群