全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10488 10
2012-12-13
非常感谢热心跟帖的朋友,这个问题现已很好的解决。使用它们的方法之后,我也把体会分享一下。或许对有类似问题的朋友有帮助。

webgu, 老师她摸我, ziyenano 的3种方法都能够达到间隔提取变量的目的。但是由于我的数据量比较大,所有就比较了一下3种方法webgu 的方法最快,而且我发现他考虑的很周到,考虑到了keep我所列变量之外的其他变量(见8楼代码18行a1)。这样就可以更好的挑选变量用于建立新的数据集。
--------------------------------------------------------------------------------------
原问题如下:
有一个数据集 其中包含大量变量,变量名比较规则 假设变量名为 A1, A2, A3, ..., A1000
那么如何固定间隔提取某些变量 用于建立新的数据集呢
比如间隔5个, 只提取5的倍数:
A5, A10, A15, A20, ..., A1000
如果是keep 或是 drop 太麻烦了哦,而且有时变量比我举例的还要多。
请高手解答,非常感谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-12-13 08:25:31
这个很容易就能做到,用一个程序:
forvalues i = 1/200 {
local j = 5*`i'
ge a`i' = A`j'
}
keep a1-a200
save 后面省略了!!
二维码

扫码加我 拉你入群

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

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

2012-12-13 09:39:34
data  work.ex;
array A(20);
do i=1 to 20;
A(i)=1;
end;
drop i;
;
run;


proc sql noprint;
select name into :col_name separated by ' '
from sashelp.vcolumn
where libname='WORK' and memname='EX'
and compress(name,'','d')='A' and
mod(input(compress(name,'','kd'),best32.),5)=0;
quit;

data ex1;
set ex;
keep &col_name;
run;
二维码

扫码加我 拉你入群

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

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

2012-12-13 15:36:44
复制代码
二维码

扫码加我 拉你入群

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

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

2012-12-13 21:26:13
老师她摸我 发表于 2012-12-13 15:36
多谢回复!
我是个sas初学者,你的这个方法我看的最明白。sas选取obs比变量更灵活,转置一下方便多了
二维码

扫码加我 拉你入群

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

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

2012-12-13 21:33:59
ziyenano 发表于 2012-12-13 09:39
data  work.ex;
array A(20);
do i=1 to 20;
多谢您的回复!
测试成功!
但是中间那段 sql的语句, 我看着有些吃力。还得多多学习
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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