全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
864 6
2012-05-29
我有两个数据集。如下:
data one
TOM  A B C D
TIM   C D A A

data two
A C D A

data one是两个同学做的答案,data two是正确结果,我想查看两个同学分别做对几个题目。
我的做法是将两个数据集set合并之后,用array比较。log里面没有报错,可是出不来结果,请教下高手们,这到底怎么了。data one;
input name$ a1$ a2$ a3$ a4$;
cards;
TOM  A B C D
TIM   C D A A
;
proc print;run;
data two;
input b1$ b2$ b3$ b4$;
cards;
A C D A
;
run;
data last;
set one two;
array c{4} $a1-a4;
array d{4}$ b1-b4;
do i=1 to 4;
if c{i}=d{i} then j=j+1;
else if c{i}^=d{i} then j=j+0;
end;
keep name j;
proc print; run;
二维码

扫码加我 拉你入群

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

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

全部回复
2012-5-30 11:26:00
data one;
input name$ a1$ a2$ a3$ a4$;
cards;
TOM  A B C D
TIM   C D A A
;

/*这里加了一行正确答案*/
data two;
input b1$ b2$ b3$ b4$;
cards;
A C D A
A C D A
;

/*把正确答案和学生的答案连接*/
data c;
        merge one (in=a)
                          two (in=b);
        if a;
run;
                       
data last;
array c{4} $ a1-a4;
array d{4} $ b1-b4;
set c;
do i=1 to 4;
if c{i}=d{i} then j+1;
else if c{i}^=d{i} then j+0;
end;
keep name j;
run;
二维码

扫码加我 拉你入群

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

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

2012-5-30 11:26:13
data one;
input name$ a1$ a2$ a3$ a4$;
cards;
TOM  A B C D
TIM   C D A A
;

data two;
input b1$ b2$ b3$ b4$;
cards;
A C D A
A C D A
;

data c;
        merge one (in=a)
                          two (in=b);
        if a;
run;
                       
data last;
array c{4} $ a1-a4;
array d{4} $ b1-b4;
set c;
do i=1 to 4;
if c{i}=d{i} then j+1;
else if c{i}^=d{i} then j+0;
end;
keep name j;
run;
二维码

扫码加我 拉你入群

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

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

2012-5-30 11:31:21
谢谢,数据集two在实际中其实很复杂,我没办法再做改动,需要以外部文件的形式引入。
二维码

扫码加我 拉你入群

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

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

2012-5-30 11:41:03
您的意思是可能是一个excel的文件或者csv文件,我想那也不是问题,导入的时候保证数据条数和one中一致就可以了,但个人认为merge还是必须要作的
二维码

扫码加我 拉你入群

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

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

2012-5-30 11:51:54
sunset1986 发表于 2012-5-30 11:41
您的意思是可能是一个excel的文件或者csv文件,我想那也不是问题,导入的时候保证数据条数和one中一致就可以 ...
奥。行。那谢谢啦哈。非常感谢。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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