first与last的组合使用
来源:互联网 发布:php连接mysqli代码 编辑:程序博客网 时间:2024/06/13 11:45
[SAS] first与last的组合使用
[前三个问题是从台湾的网站抄来的,不过为了配合说明第四个问题,我改动了原始数据]
在SAS环境里面,会使用first与last指令是很方便的事情。
因为常常会遇到要取次数、取第一笔数据、取最后一笔数据等问题,很难用SPSS去完成这样的动作(会SPSS程序语言的人很少)。
今天要介绍的这两指令的基本款使用:
先来看今天的资料:分别为ID、体重、性别、日期
问题一:如何取第一笔数据?
首先将数据汇入/输入到SAS中存成hp1为名称的数据文件,接着请注意由于first与last的用法都牵扯到依某研究者指定变项排序的过程,因此必须使用PROC SORT先进行排序动作
Data hp1;
Cards;
1
;
Run;
Data hp2;
Proc sort;
Proc print;
Run;
Data hp3first;
By id;
Proc print;
run;
在此范例中依照ID进行排序后,接着我们要取第一笔数据出来。在SAS逻辑中,「if first.id then output; 」意思是如果遇到ID的第一笔请输出。接着我们看一下结果:
Obs
id
weight
gender
date
1
1
59
1
20070101
2
2
62
2
20070201
3
3
65
1
20070401
是不是就完成了?
问题二:取最后一笔数据?
我想反应快的读者已经想到是不是用「last.id」呢?没错,同理!
Data hp3last;
By id;
Proc print;
run;
直接来看结果:
Obs
id
weight
gender
date
1
1
59
1
20070101
2
2
65
2
20070301
3
3
65
1
20070601
问题三:想取中间值怎么作?
照SAS逻辑想,如果first.id=0且last.id=0不就取中间值了吗?指令参照如下:
注意:如果数据没有中间值,当然就不会取出来喔!
Data hp3middle;
By id;
If first.id=0 and last.id=0;
Proc print;
Run;
注意只有第5条数据符合结果:
Obs
id
weight
gender
date
1
3
65
2
20070501
如果我想计算次数该怎么作呢?
这时候我们就要创一个变项来放计算后的次数,本范例创「c」这个变项,先告诉SAS说当遇到第一笔数据时请让「c=.」,接着我让「c+1」意思是随着数据一笔扫过去请加1,最后至少要有终结啊!就让SAS遇到最后一笔数据时候停止。
Data fre;
By id;
Proc print;
Run;
结果:
Obs
id
weight
gender
date
c
1
1
59
1
20070101
1
2
2
65
2
20070301
2
3
3
65
1
20070601
3
因此结果就变成每个个案后面都有一个次数,不就完成了吗 : ) 不过其实过程中特别要注意Output的位置摆放,下回SAS特辑待续。
问题四:first与last的组合使用?
如果使用两个变量排序呢
把问题一的程序修改一下:
Data hp5first;
By id weight;
Proc print;
run;
Obs
id
weight
gender
date
1
1
59
1
20070101
2
2
62
2
20070201
3
2
65
2
20070301
4
3
65
1
20070401
问题二修改:
Data hp5last;
By id weight;
Proc print;
run;
结果:
Obs
id
weight
gender
date
1
1
59
1
20070101
2
2
62
2
20070201
3
2
65
2
20070301
4
3
65
1
20070601
问题三修改:
Data hp3middle;
By id weight;
If first. weight =0 and last. weight =0;
Proc print;
Run;
Obs
id
weight
gender
date
1
3
65
2
20070501
综合来看,使用两个by变量时,第二个变量的first和last值受第一个变量的影响。
From:http://blog.sina.com.cn/s/blog_4a17fc5b01015rmr.html
- first与last的组合使用
- first-child 和 last-child的使用
- 英文名字中的first name与last name
- Oracle:函数Last,First的用法
- Oracle:函数Last,First的用法
- Mysql --nulls first(last)的替代方法
- jQuery 选择器 first-child和first-of-type、 last-child和last-of-type的区别
- vector::erase(iterator first, iterator last)使用须知
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序 使用 nulls first 或者 nulls last
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序中使用nulls first 或者nulls last 语法
- Oracle 排序中使用nulls first 或者nulls last 语法
- FIRST,BUT NOT LAST
- oracle keep(first/last)
- Julia:last() 和first()
- 把原理图和PCB复制元件和封装到库的一些技巧(以抄OK6410的底座封装为例)
- 关于IOS伪类:hover的问题
- 在从1到n的正数中1出现的次数
- 关于绝对定位后元素(a标签)无法点击
- 判断一个app运行在foreground
- first与last的组合使用
- 那一年,我们不懂爱(仙剑奇侠传)
- 激怒
- HTML5 开发者需要了解的技巧和工具汇总
- JSPg开发中出错:软件包 javax.servlet 不存在
- 使用MyEclipse时Tomcat的局部代码热部署
- java中 int 和 Integer 的区别
- 使用CSS实现各个方向的三角形
- Iptables 应用解析