楼主: huangrong
19956 22

求助:怎样在原有sas数据集中选择某几行某几列形成一个新的数据集? [推广有奖]

11
naivearies 发表于 2009-2-16 15:46:00
学习了,有点理解_n_的含义了,多谢LS各位~!

12
qoo_519 发表于 2009-2-18 13:24:00
有意思

13
luijb 在职认证  发表于 2009-2-18 14:52:00

这个问题其实经常遇到,我觉得最简单的方法还是iml 比较直观

西格玛临床统计服务工作室http://www.sigma-stat.com/,luijb@163.com

14
sdtjx_cj 发表于 2009-2-18 23:21:00

我再继续请教9楼一个问题,如何在if语句中再加入对y1,y2,y3的变换语句,比如做一些运算?

15
chengsm13 发表于 2009-2-18 23:36:00

我可能并不确切明白你的要求,让我来试着猜一下。举一个例子,

data your_dataset;

    set  your_dataset;

    if y1>y2+y3;

    keep y1 - y3;

run;

那么,你所得到的数据集只保留了那些满足y1>y2+y3的行,其他的行都被删除了。又比如

data your_dataset;

    set  your_dataset;

    if (y1<y2)|(y3>2*y1);

    keep y1 - y3;

run;

那么,你所得到的数据集只保留了满足y1<y2或者y3>2*y1的行。

不知是否回答了你的问题。

16
sdtjx_cj 发表于 2009-2-18 23:44:00
不是这个意思,我是要在if的条件下(取满足行号的行),做y1,y2,y3的运算,如求对数,倒数等,而且是多个运算同时完成?

17
chengsm13 发表于 2009-2-19 00:59:00

可能是这样了,例如,

data your_dataset;

    set  your_dataset;

    if (_n_=n1)|(_n_=n2)|(_n_=n3) then do;

        z1=log(y1);

        z2=y2*y3; 

    end;

run;

这个运算将只对n1,n2 和n3行作,除了这三行以外,z1和z2的值都是missing。


18
hongtianli 发表于 2009-2-20 13:36:00

data a;
input y y1 y2 y3 y4;
cards;
1 10 20 30 40
2 20 3  4   4
3 30 4 4   4
4 40 4 4   4
;
run;

data b;
set a(firstobs=2 obs=3);
keep y1 y2 y3;
run;

本文来自: 人大经济论坛(http://www.pinggu.org) 详细出处参考:https://bbs.pinggu.org/b68i416698p2.html

19
xuwei2007 发表于 2009-2-21 22:21:00

用SQL 实现

20
leaflittle321 在职认证  发表于 2013-3-21 11:32:20
data a;
set b(firstobs=x obs=y);
var *** **** ****;
run;
proc print data=a;
run;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 23:30