楼主: xgnfly
10633 20

请问如何把已有数据集中数据导入到数组中,如把导进数组k. [推广有奖]

11
xgnfly 发表于 2010-7-6 23:15:46
crackman 发表于 2010-7-6 19:42
data crackman;
input k l;
cards;
2 -47961.4
2 -47958.2
2 -47953.2
2 -47959.3
3 -46565.7
3 -46645
;
run;
proc transpose data=crackman out=k;
var k;
run;
proc transpose data=crackman out=l;
var l;
run;
data k;
set k;
array k col1-col6;
put "k1="k[1];
put "k6="k[6];
run;
data l;
set l;
array l col1-col6;
put "l1="l[1];
put "l6="l[6];
run;
谢谢!这正是我所需要的。

12
crackman 发表于 2010-7-6 23:30:04
如果是加减运算这些
你可以用LAG啊
或者你用call symput啊

13
crackman 发表于 2010-7-6 23:34:05
data crackman;

input k l;

cards;

2 -47961.4

2 -47958.2

2 -47953.2

2 -47959.3

3 -46565.7

3 -46645

;
run;
data _null_;
set crackman;
call symput("k"||left(_n_),k);
call symput("l"||left(_n_),l);
run;
data _null_;
%put "result"=%eval(&k1.-&k3.);
run;

14
xgnfly 发表于 2010-7-7 21:36:46
crackman 发表于 2010-7-6 23:34
data crackman;

input k l;

cards;

2 -47961.4

2 -47958.2

2 -47953.2

2 -47959.3

3 -46565.7

3 -46645

;
run;
data _null_;
set crackman;
call symput("k"||left(_n_),k);
call symput("l"||left(_n_),l);
run;
data _null_;
%put "result"=%eval(&k1.-&k3.);
run;
谢谢crackman的回答。如我想得到、任一行i减去其后第二行i-2的值,该如何修改程序。

15
crackman 发表于 2010-7-7 22:47:04
do 循环

16
xgnfly 发表于 2010-7-7 22:55:14
crackman 发表于 2010-7-7 22:47
do 循环
我知道用循环,但不知如何引用系i个值,及第i-2个值。
如下程序错在那?
data crackman;
input k l;
cards;
2 -47961.4
2 -47958.2
2 -47953.2
2 -47959.3
3 -46565.7
3 -46645
;
run;
data _null_;
set crackman;
call symput("ka"||left(_n_),k);
call symput("lb"||left(_n_),l);
run;
data c;
%do i=2 %to 9;
dm=&k&i.-&k&(i-2).;
%end;
run;

17
crackman 发表于 2010-7-7 23:25:40
data c;
%do i=2 %to 9;
%let j=%eval(&i.-2);
dm=&k&i.-&k.&j..;
%end;
run;

18
xgnfly 发表于 2010-7-8 21:54:27
crackman 发表于 2010-7-7 23:25
data c;
%do i=2 %to 9;
%let j=%eval(&i.-2);
dm=&k&i.-&k.&j..;
%end;
run;
不好意思,程序出错误了,日志窗口如下:

data c;
19   %do i=2 %to 4;
ERROR: %DO 语句在开型代码中无效。
20   %let j=%eval(&i.-2);
WARNING: 没有解析符号引用 I。
WARNING: 没有解析符号引用 I。
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &i.-2
21   dm=&k&i.-&k.&j..;
        -
        22
WARNING: 没有解析符号引用 K。
WARNING: 没有解析符号引用 I。
21   dm=&k&i.-&k.&j..;
           --
           22
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,
              INPUT, PUT.
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值,
              arrayname, (, +, -, INPUT, NOT, PUT, ^, _NEW_, ~.
WARNING: 没有解析符号引用 K。
21   dm=&k&i.-&k.&j..;
           --
           201
ERROR 201-322: 该选项不可识别,将被忽略。
22   %end;
ERROR: %END 语句在开型代码中无效。
23   run;

19
xgnfly 发表于 2010-7-10 08:38:13
还没弄清楚,请高手指点。
18# xgnfly

20
crackman 发表于 2010-7-10 12:56:00
写一个宏
把DO循环放进去就完事了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 17:35