【发布时间】:2017-05-24 06:54:35
【问题描述】:
我有以下数据:
Name Scores
A 93/90/100
B 70/90/80
C 80/20/40/30
D 60/60
E 100/100/0/60/80
F 0/20/40/50
这里唯一的规则是“>=60:通过”、“
但是,如果有的话,我想保留“失败”的记录。因此结果应该是:
A Pass
B Pass
C Pass/Fail
D Pass
E Pass/Fail
F Fail
我唯一的想法是将分数分成几行:
Name Scores
A 93
A 90
A 100
B 70
B 90
B 80
C ...
然后,将它们转移到
data Score;
set Score;
if Scores>=60 then indicator = 'Pass';
if Scores<60 then indicator = 'Fail';
run;
Name Scores
A Pass
A Pass
A Pass
B Pass
B Pass
B Pass
C ...
然后删除重复的,做与第一步相反的操作。
A Pass
B Pass
C Pass/Fail
D Pass
E Pass/Fail
F Fail
但我仍然不知道 SAS/SQL 是否可以做到这一点......
【问题讨论】:
-
永远不要将数据存储为破折号分隔的项目。只会给你带来很多麻烦。
-
您提出的每个步骤都非常简单。在寻求帮助之前,您应该自己尝试这样做,并在这样做时发布您的代码。
-
@user667489,我只输入了我能输入的代码。我发现一个communities.sas.com/t5/SAS-Procedures/… 也在做类似的事情。我不知道如何将此应用于列中的所有元素。 (对不起,我不知道如何在SAS中使用数组)
-
不应该'E'有'Pass'作为指标,因为没有一个值是