我在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已经从该数据集中删除了所有字符。把它当作人物来读,然后你就可以进行第二步了。在grade后面加一个$,将其作为字符值读入。
字面意思是一个字符的变化;)
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;
您已经将GRADE读取为数字变量。像A或E这样的单字母代码将被映射到相应的特殊缺失值,如A或E。任何其他的文本将被映射到普通失踪。
你可以使用MISSING()函数来测试这些。
if missing(grade) then delete;