楼主: lqwoailuo
2333 21

请教一个sas问题? [推广有奖]

  • 4关注
  • 0粉丝

博士生

94%

还不是VIP/贵宾

-

威望
0
论坛币
200 个
通用积分
0.0001
学术水平
4 点
热心指数
5 点
信用等级
5 点
经验
14009 点
帖子
407
精华
0
在线时间
177 小时
注册时间
2013-8-6
最后登录
2014-5-29

楼主
lqwoailuo 发表于 2013-12-3 10:56:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现在我有一个excel表(表的名字为“A”),一列数据(10行),如下:(类似于考试的答案)
1.A
2.B
3.C
4.A
5.D
6.A
7.C
8.BC
9.ABCD
10.BCD
然后我还有一个表(名字为“B”),也是一列数据(10行),如下:
1.A
2.B
3.C
4.D
5.D
6.A
7.C
8.BC
9.ABC
10.BC
表B为正确答案,想要将2表比较,假设每个10分,最后结果想看第几题错了,总得分多少?应该怎么做?

二维码

扫码加我 拉你入群

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

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

关键词:SAS问题 Excel表 EXCEL 正确答案 xcel 正确答案 excel

沙发
lqwoailuo 发表于 2013-12-3 10:57:13

藤椅
lqwoailuo 发表于 2013-12-3 11:03:51

板凳
wwang111 发表于 2013-12-3 11:19:14
data a;
infile cards dlm='.';
input obs ans $;
cards;
1.A
2.B
3.C
4.A
5.D
6.A
7.C
8.BC
9.ABCD
10.BCD
;
data b;
infile cards dlm='.';
input obs ans_crt $;
cards;
1.A
2.B
3.C
4.D
5.D
6.A
7.C
8.BC
9.ABC
10.BC
;

proc sql;
create table test as
select a.*,b.ans_crt
from a join b
on a.obs=b.obs;
quit;

data wanted;
set test end=last;
length num $100;
retain num;
if ans = ans_crt then score+10;
if ans ne ans_crt then num=catx(",",num,obs);
if last;
keep num score;
run;
只有一个罗纳尔多

报纸
yongyitian 发表于 2013-12-3 11:40:30
  1. data a1;
  2. input question $;
  3. q_no = scan(question, 1, '.');
  4. answer = scan(question, 2, '.');
  5. drop question;
  6. datalines;
  7. 1.A
  8. 2.B
  9. 3.C
  10. 4.A
  11. 5.D
  12. 6.A
  13. 7.C
  14. 8.BC
  15. 9.ABCD
  16. 10.BCD
  17. ; run;
  18. data a2;
  19. input question $;
  20. Q_no = scan(question, 1, '.');
  21. Correct_answer = scan(question, 2, '.');
  22. drop question;
  23. datalines;
  24. 1.A
  25. 2.B
  26. 3.C
  27. 4.D
  28. 5.D
  29. 6.A
  30. 7.C
  31. 8.BC
  32. 9.ABC
  33. 10.BC
  34. ; run;

  35. proc sql;
  36.    create table mark as
  37.    select a.*, b.correct_answer,
  38.                case when a.answer eq b.correct_answer then 10
  39.                else 0
  40.                end as score, sum(calculated score) as total_score
  41.    from a1 a, a2 b
  42.    where a.q_no=b.q_no;
  43. quit;
  44. proc print data=mark; title 'mark'; run;
复制代码

地板
lqwoailuo 发表于 2013-12-3 13:37:45
wwang111 发表于 2013-12-3 11:19
data a;
infile cards dlm='.';
input obs ans $;
谢谢。

7
lqwoailuo 发表于 2013-12-3 13:38:58
yongyitian 发表于 2013-12-3 11:40
谢谢。

8
lqwoailuo 发表于 2013-12-3 13:47:57
wwang111 发表于 2013-12-3 11:19
data a;
infile cards dlm='.';
input obs ans $;
proc sql;
create table test as
select a.*,b.ans_crt
from a join b
on a.obs=b.obs;
quit;

data wanted;
set test end=last;
length num $100;
retain num;
if ans = ans_crt then score+10;
if ans ne ans_crt then num=catx(",",num,obs);
if last;
keep num score;
run;
朋友,能不能简单讲解一下这段代码的大概意思,不是太懂。

9
lqwoailuo 发表于 2013-12-3 13:52:58
yongyitian 发表于 2013-12-3 11:40
朋友,你创建a2为正确数据集,a1为另一个数据集,二者比较。如果我还有一些数据集(假设为a3,a4,a5),也想和a2一起比较,就好像是好几个学生考试的答案和正确答案一起比较,最后得到分数,那么,最后的程序那块应该怎么编?谢谢。

10
lqwoailuo 发表于 2013-12-3 14:53:51

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

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