楼主: noyazz
3508 4

[求助]required operator not found in expression [推广有奖]

  • 0关注
  • 0粉丝

小学生

35%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
55 点
帖子
7
精华
0
在线时间
2 小时
注册时间
2013-7-31
最后登录
2015-7-25

楼主
noyazz 发表于 2014-4-11 00:15:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
这段程序的目的是clean up问卷调查中的一些变量。
1. 这个是不用macro(只处理Q81大问题中的若干小问题)的,能运行通过。
data Q81;
        set a.beijing;
        array check(6, 9);
        do k = 1 to 9;
                if check(6, k) in (1, 2, 3) then do;
                        do i = 1 to 5;
                                check(i, k) = check(6, k);
                        end;
                end;
        end;
run;


2. 我写了个macro,但是运行之后报错。请帮忙看错在哪里,谢谢!
options nocenter date pageno=1 mprint symbolgen mlogic minoperator mindelimiter=',';
%macro cleanup(ds= , city= , row= );
        data &ds;
                set a.&city;
                array check(6, &row);
                %do k = 1 %to &row;
                        %if check(6, k) in (1, 2, 3) %then %do;
                                %do i = 1 %to 5;
                                        check(i, k) = check(6, k);
                                %end;
                        %end;
                %end;
        run;
%mend;
%cleanup(ds= Q81, city= beijing, row= 9);

ERROR: Required operator not found in expression: check(6, k) in (1, 2, 3)
ERROR: The macro CLEANUP will stop executing.





二维码

扫码加我 拉你入群

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

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

关键词:Expression required operator require express expression required

沙发
gongxun1234 发表于 2014-4-11 00:32:12
循环中的k是宏变量吧

藤椅
noyazz 发表于 2014-4-11 00:47:14
gongxun1234 发表于 2014-4-11 00:32
循环中的k是宏变量吧
改了一下,还是同样报错。

options nocenter date pageno=1 mprint symbolgen mlogic minoperator mindelimiter=',';
%macro cleanup(ds= , city= , row= );
        data &ds;
                set a.&city;
                array check(6, &row);
                %do k = 1 %to &row;
                        %if check(6, &k) in (1, 2, 3) %then %do;
                                %do i = 1 %to 5;
                                        check(&i, &k) = check(6, &k);
                                %end;
                        %end;
                %end;
        run;
%mend;
%cleanup(ds= Q81, city= beijing, row= 9);

ERROR: Required operator not found in expression: check(6, &k) in (1, 2, 3)
ERROR: The macro CLEANUP will stop executing.

板凳
gongxun1234 发表于 2014-4-11 01:05:37
options nocenter date pageno=1 mprint symbolgen mlogic minoperator mindelimiter=',';
%macro cleanup(ds= , city= , row= );
        data &ds;
                set a.&city;
                array check(6, &row);
                %do k = 1 %to &row;
                        if check(6, &k.) in (1, 2, 3) then do;
                                %do i = 1 %to 5;
                                        check(&i, &k) = check(6, &k);
                                %end;
                        end;
                               
                %end;
        run;
%mend;
%cleanup(ds= Q811, city=beijing, row= 9);

报纸
noyazz 发表于 2014-4-11 01:27:00
gongxun1234 发表于 2014-4-11 01:05
options nocenter date pageno=1 mprint symbolgen mlogic minoperator mindelimiter=',';
%macro cleanup ...
谢谢:)

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

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