全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3940 9
2014-02-11
有两个数据,第一个数据结构如下:
obs  x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
1      2  3   5   6   9  9  5   5   4    1
2      2  2   4   7   6  3  5   2   4    11
3      1  6   8   2   1  2  9   6   6    14
4    15  3   2   4   6  0  1   2   5     3
5      2  8   7   6   2  5  5   7   3    2
6      2  3   5   6   9  9  5   5   4    1
7      5  3   4   1   3  4  6   7   3    9
8      6  0   1   6   2  5  1   3   4    6
9      2  3   5   6   9  9  5   5   4    1
10    5   5  1   3   6  2  2   4    7   3
第二个数据集只有一个变量
y
1
3
6
8
y表示下标,意思是只取第一个数据集中的x1 x3 x6 x8这四个变量。

因为这两组数据的维度都不相同,也不知道该怎样合并才好,并且使第一个数据集中只保留x1, x3, x6, x8四个变量。

求高手指点!
二维码

扫码加我 拉你入群

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

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

全部回复
2014-2-11 21:05:21
有一个大概地方没说清楚,抱歉。变量y表示的是动态下标,每次产生的y值都不一样,不是固定的。
二维码

扫码加我 拉你入群

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

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

2014-2-11 21:12:49
fattyclouds 发表于 2014-2-11 21:05
有一个大概地方没说清楚,抱歉。变量y表示的是动态下标,每次产生的y值都不一样,不是固定的。
楼主可以试试用hash table.
二维码

扫码加我 拉你入群

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

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

2014-2-11 21:33:46
jzh63 发表于 2014-2-11 21:12
楼主可以试试用hash table.
多谢!不知道data step或者array有什么函数可以处理这种从x1,...x_n的多列数据中,挑选出非连续下标的部分变量。
非常感谢!
二维码

扫码加我 拉你入群

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

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

2014-2-11 22:32:04
先用元数据提出大表的变量名
用if substr(name,2) in (1,3,6,8)筛选出元数据的观测即想要的数据集的变量名(y不多的话直接写,多的话把观测赋给宏变量
然后把筛选好的变量名赋给宏变量
最后在原来大表里keep一下

中间两步可以用字典一步到位
二维码

扫码加我 拉你入群

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

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

2014-2-12 00:38:00
Here is a solution. See if it's what you want.

data data;
input   x1 x2 x3 x4 x5 x6 x7 x8 x9 x10;
datalines;
2  3   5   6   9  9  5   5   4    1
2  2   4   7   6  3  5   2   4    11
1  6   8   2   1  2  9   6   6    14
5  3   2   4   6  0  1   2   5     3
2  8   7   6   2  5  5   7   3    2
2  3   5   6   9  9  5   5   4    1
5  3   4   1   3  4  6   7   3    9
6  0   1   6   2  5  1   3   4    6
2  3   5   6   9  9  5   5   4    1
5   5  1   3   6  2  2   4    7   3
;
run;
data index;
input index;
datalines;
1
3
6
8
;
run;
data index;
set index;
selectedindex=compress('x'||index);
run;
proc sql noprint;
select selectedindex into: selectedindex separated by ','
from index;
%put &selectedindex;
create table selecteddata as
select &selectedindex
from data;
quit;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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