首页 > 解决方案 > 当列不是数字时,SAS删除行

问题描述

我在 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; 

标签: sas

解决方案


在第一步中,您将年级读为数字。这意味着 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; 

推荐阅读