全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
12931 4
2012-08-21
如题
二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-21 15:25:19
在已按变量variable分组的数据集中,标记每组的第一行和最后一行
二维码

扫码加我 拉你入群

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

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

2014-10-15 21:11:33
杨花点点 发表于 2012-8-21 15:25
在已按变量variable分组的数据集中,标记每组的第一行和最后一行
麻烦说的详细一点
像这个例子:
data by;
input state $ city $ month x;
cards;
nc a 1 3.02
nc a 2 2.1
nc a 3 4.03
nc b 1 5.03
nc b 2 6.3
nc b 3 7.3
va c 1 8.1
va c 2 8.2
va c 3 9.3
va d 1 10.8
va d 2 11.1
va d 3 31.2
;
run;
data by2;
  set by;
  by state city month;
  file print;
  if x=8.1 then put _all_;
run;

输出的结果为:
state=va city=c month=1 x=8.1 FIRST.state=1 LAST.state=0 FIRST.city=1 LAST.city=0 FIRST.month=1 LAST.month=1 _ERROR_=0
_N_=7
1和0分别表示什么意思?谢谢~
二维码

扫码加我 拉你入群

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

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

2014-10-18 01:51:53
"by state city month;"--说明对数据分别依次按 state,city,month 类别集中
first/last.variable=1 表示 true first/last.variable=0 表示 false

if x=8.1 then put _all_;
===对应的数据行是:va c 1 8.1
FIRST.state=1 LAST.state=0===state va是第一次出现,所以first.state=1, 因为后面va还有两条记录,所以这一条数据记录并不是最后一个,所以LAST.state=0
同理 FIRST.city=1 LAST.city=0
FIRST.month=1 LAST.month=1 ===在同一state (va), 同一city(c)的情况下,month=1 是第一次出现,也是最后一次出现,因为这是唯一的一次记录,所以 FIRST.month=1 LAST.month=1

如果将语句改为  if x=8.2 then put _all_;
就会得到:
FIRST.state=0 LAST.state=0 FIRST.city=0 LAST.city=0 FIRST.month=1 LAST.month=1
二维码

扫码加我 拉你入群

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

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

2015-11-19 14:28:25
正解,其实主要用途还是查重!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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