从旧SAS获取新数据
我是SAS的新手 我举了一个例子:从旧SAS获取新数据,sas,sas-iml,Sas,Sas Iml,我是SAS的新手 我举了一个例子: proc iml; x={1 2 3 4 5 6 7 8 9}; y={2,3,5,4,8,6,4,2,2}; z={1,1,1,1,2,2,2,2,2}; data=t(x)||y||z; print data; run; quit; data 1 2 1 2 3 1 3 5 1 4 4 1 5 8 2 6 6 2 7 4 2 8 2 2 9 2 2 如何创建只有Z=1和Z=2的新数据 谢谢。您可以使用loc函数对数据矩阵进
proc iml;
x={1 2 3 4 5 6 7 8 9};
y={2,3,5,4,8,6,4,2,2};
z={1,1,1,1,2,2,2,2,2};
data=t(x)||y||z;
print data;
run;
quit;
data
1 2 1
2 3 1
3 5 1
4 4 1
5 8 2
6 6 2
7 4 2
8 2 2
9 2 2
如何创建只有Z=1和Z=2的新数据
谢谢。您可以使用loc函数对数据矩阵进行子集设置。以下是从中的索引矩阵剪下的函数说明 LOC函数通常对向量和矩阵的子集非常有用。此功能用于定位满足给定条件的元件。元素的位置按行主顺序返回。对于向量,这只是元素的位置。对于矩阵,为了使用LOC函数的结果作为索引,通常需要进行一些操作。函数的语法为: 适用于您的示例:
proc iml;
x={1 2 3 4 5 6 7 8 9};
y={2,3,5,4,8,6,4,2,2};
z={1,1,1,1,2,2,2,2,2};
data=t(x)||y||z;
print data;
z1rows=loc(data[,3]= 1);
z1=data[z1rows,];
print z1;
z2rows=loc(data[,3]= 2);
z2=data[z2rows,];
print z2;
run;
quit;
打印z1的结果代码>
+------------+
| z1 |
+---+----+---+
| 1 | 2 | 1 |
| 2 | 3 | 1 |
| 3 | 5 | 1 |
| 4 | 4 | 1 |
+---+----+---+
打印z2的结果代码>
+------------+
| z2 |
+---+----+---+
| 5 | 8 | 2 |
| 6 | 6 | 2 |
| 7 | 4 | 2 |
| 8 | 2 | 2 |
| 9 | 2 | 2 |
+---+----+---+
关于LOC函数的更多示例和讨论
+------------+
| z2 |
+---+----+---+
| 5 | 8 | 2 |
| 6 | 6 | 2 |
| 7 | 4 | 2 |
| 8 | 2 | 2 |
| 9 | 2 | 2 |
+---+----+---+