m*****y 发帖数: 229 | 1 请问怎么把table的一列存进一个array里。
我试了个以下方法行不通。
proc sql ;
create table ngcode;
select distinct NGCODE into array1
from sgroup;
求高手指点。 | c*****a 发帖数: 808 | 2 select distinct NGCODE into :array1 separated by ' '这意思?变成macro
variable? | m*****y 发帖数: 229 | 3 不一定要macro variable。 只要是能把一列存进array就可以。
【在 c*****a 的大作中提到】 : select distinct NGCODE into :array1 separated by ' '这意思?变成macro : variable?
| k*******a 发帖数: 772 | 4 array只能在data step里面用吧, 不过你可以用macro
有两种方法,第一个可以把所有值存到一个macro变量里面
proc sql ;
select distinct NGCODE into :array1 separated by " "
from sgroup;
第二个方法先得出所有值的个数,每个值存在一个macro里面array1-arrayn
proc sql ;
select count(distinct NGCODE) into :n from sgroup;
select distinct NGCODE into :array1-array%left(&n)
from sgroup;
quit;
这样所有的值都存到 array1 到 arrayn 这n个 macro variable了
【在 m*****y 的大作中提到】 : 不一定要macro variable。 只要是能把一列存进array就可以。
| m*****y 发帖数: 229 | 5 非常感谢~ 我用了你的第二个方法。
还有个问题。我想看数据是不是存进去了,用了
proc print &array;
run;
LOG 里出了错误。
ERROR 22-322: Syntax error, expecting one of the following: ;, BLANKLINE,
DATA, DOUBLE, HEADING,LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLIT, STYLE,
SUMLABEL, UNIFORM, WIDTH.
ERROR 200-322: The symbol is not recognized and will be ignored.
我哪里错了呢?谢谢
【在 k*******a 的大作中提到】 : array只能在data step里面用吧, 不过你可以用macro : 有两种方法,第一个可以把所有值存到一个macro变量里面 : proc sql ; : select distinct NGCODE into :array1 separated by " " : from sgroup; : 第二个方法先得出所有值的个数,每个值存在一个macro里面array1-arrayn : proc sql ; : select count(distinct NGCODE) into :n from sgroup; : select distinct NGCODE into :array1-array%left(&n) : from sgroup;
| k*******a 发帖数: 772 | 6 array都是macro啊, SAS和R是不一样的
你要用那些值的话,用 &array1, &array2....来代替
【在 m*****y 的大作中提到】 : 非常感谢~ 我用了你的第二个方法。 : 还有个问题。我想看数据是不是存进去了,用了 : proc print &array; : run; : LOG 里出了错误。 : ERROR 22-322: Syntax error, expecting one of the following: ;, BLANKLINE, : DATA, DOUBLE, HEADING,LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLIT, STYLE, : SUMLABEL, UNIFORM, WIDTH. : ERROR 200-322: The symbol is not recognized and will be ignored. : 我哪里错了呢?谢谢
| m*****y 发帖数: 229 | 7 I see 了, 非常感谢。
【在 k*******a 的大作中提到】 : array都是macro啊, SAS和R是不一样的 : 你要用那些值的话,用 &array1, &array2....来代替
| d******9 发帖数: 404 | 8 Maybe you can Data step to do it.
Data B;
Set A NOBS=N; (Say N=100)
Array C(100) C1-C100;
Retain C1-C100;
do I=1 to N;
C(I)=NGCODE;
end;
run; |
|