SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 707|回复: 7
打印 上一主题 下一主题

如何把dataset中的某个变量变成array

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-9-9 16:35:56 | 只看该作者

如何把dataset中的某个变量变成array

有什么方法可以把dataset中的某个变量变成array么?
如果变量是by group的,可以把某个group的变量变成array么?


另外,如果我想在多个data步中用一个array,有什么方法可以共享array么,因为我发现上个data步声明的array到其他proc步或者data步就不能用了。


非常感谢各位大大!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-9-10 09:01:28 | 只看该作者

Re: 如何把dataset中的某个变量变成array

ARRAY语句本身是个DATA STEP语句,也就是说它只在data步和run步之间才能被识别。你的这种要求,就像要求树能自己站起来从北半球跑南半球。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-9-10 17:08:59 | 只看该作者

Re: 如何把dataset中的某个变量变成array

....... <!-- s:-? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":-?" title="Confused" /><!-- s:-? -->
那怎么办才能把一部分变量数据抽出来一组共享啊。。。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-9-10 17:21:37 | 只看该作者

Re: 如何把dataset中的某个变量变成array

[code:2yzrostx]data raw;
        array ary1(*) a1-a10;
        do i=1 to dim(ary1);
                ary1(i)=1;
        end;
        output;
        do i=1 to dim(ary1);
                ary1(i)=2;
        end;
        output;
        do i=1 to dim(ary1);
                ary1(i)=3;
        end;
        output;
run;

proc contents data=raw out=varsinfo noprint;
run;

proc sql noprint;
        select name into &#58;varlist separated by ' ' from varsinfo where substr(name,1,1)='a' order by varnum;
quit;

%put &amp;varlist;

data temp(keep=value varname);
        set raw;
        array arytmp(*) &amp;varlist;

        do i=1 to dim(arytmp);
                varname=vname(arytmp(i));
                value=arytmp(i);
                output;
        end;

run;
[/code:2yzrostx]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-9-11 02:28:31 | 只看该作者

Re: 如何把dataset中的某个变量变成array

太感谢了!

我查资料,发现proc fcmp
里有个READ_ARRAY ,和WRITE_ARRAY 函数
很方便,但是只能把所有的指定变量全都读取,或者全都写入赋值。
对于分组by group的,没有任何说明。

请问大大,还有没有什么方法,能够分组的取某个变量,计算后的数组,又可以赋值给变量指定区间的观测呢?group中的观测数不一定相同。

比如说数据如下:

group  x
1         2
1         3
1         5
1         7
1         9
1         7
2         1
2         9
2         8
3         6
3         2
3         3
3         5
3         7

比如说想把group1中的x抽出,计算后比如说整个group1的平均数,再赋值回x
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-9-12 23:39:41 | 只看该作者

Re: 如何把dataset中的某个变量变成array

用数据集做为数据的存储与传递载体不就可以吗?
不一定要强求赋给某个变量或者&quot;数组&quot;啊
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2010-9-12 23:46:39 | 只看该作者

Re: 如何把dataset中的某个变量变成array

sql  into by 放宏变量中。
可以满足lz折腾的想法。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2010-9-13 13:05:39 | 只看该作者

Re: 如何把dataset中的某个变量变成array

to sxlion
谢谢大大!
放在宏变量中后如何对其元素进行引用,计算呢?谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-3 22:06 , Processed in 0.081132 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表