0

我在 SAS 中有这个数据集学生,我计划删除成绩为非数字的记录(行)。我尝试了以下代码,但没有奏效。我试过'如果等级=。然后删除;' 以及它仍然没有工作。我不想替换这些值,我只想删除该行。对此有什么想法吗?

data student;
infile datalines firstobs=2 dsd truncover; 
input student$ class$ grade; 
datalines;
student, class, grade 
Jansen, Brave, A
Yassin, Brave, 70
Benison, Brave, 67
Yan Jin, Brave, E
James, Hero, 90 
Michelle, Hero, 89
Hiroku, Hero, C 
Misoku, Hero, 93
;
run; 

data student_cleaned; 
set work.student; 
if not (anyalpha(grade)) then delete; 
run; 

4

2 回答 2

0

在第一步中,您将年级读为数字。这意味着 SAS 已经从该数据集中删除了任何字符。将其作为字符读入,然后您可以进行第二步。在成绩后添加 $ 以将其作为字符值读入。

从字面上看,一个字符的变化;)

data student;
infile datalines firstobs=2 dsd truncover; 
input student$ class$ grade $; 
datalines;
student, class, grade 
Jansen, Brave, A
Yassin, Brave, 70
Benison, Brave, 67
Yan Jin, Brave, E
James, Hero, 90 
Michelle, Hero, 89
Hiroku, Hero, C 
Misoku, Hero, 93
;
run; 

data student_cleaned; 
set work.student; 
if anyalpha(grade) then delete; 
run; 
于 2021-10-13T15:01:35.040 回答
0

您已经将 GRADE 视为数字变量。A 或 E 等单字母代码将映射到 .A 或 .E 等相应的特殊缺失值。任何其他文本都将映射到常规缺失。

您可以使用 MISSING() 函数来测试其中的任何一个。

if missing(grade) then delete; 
于 2021-10-13T15:02:03.053 回答