使用百分号读取包含字符和数字的列

时间:2014-12-02 19:09:20

标签: sas

我们试图从csv中读取一个主要具有39.9%格式值但也有一些值为's'的列。我们不相信我们可以用信息干净地阅读本专栏。有没有办法干净地做到这一点,还是我们需要先将它作为字符串输入?

1 个答案:

答案 0 :(得分:4)

这取决于您想要的数据。如果" S"具有" SKIP"的含义或类似的东西,你希望它是一个缺失值,否则得到一个数字结果,你可以这两种方式。

首先,您可以使用PERCENTw.d信息读取它,并包含??告诉解析器不要 担心无效数据 - 自动使其丢失。

data test;
  infile datalines truncover;
  input x ??percent9.3;
datalines;
BLANK
39.4%
38.3%
DUMMY
S
IDONTKNOW
49.5%
;;;;
run;

此处所有非数字值都将变为.

其次,如果您有多个不同的字符值并且它们始终是单个字母字符,则可以将它们视为特殊缺失。 SAS并不只有一个丢失/ null,但是28; ..A.Z._。您可以使用missing语句将输入中的特定字母定义为缺失。

missing s d r; *skip, don't know, refuse;
data test;
  infile datalines truncover;
  input x percent9.3;
datalines;
37.5%
38.3%
S
49.3%
D
R
R
18.4%
;;;;
run;
missing;

打开数据时,数据会显示数据集中的S,D,R;这些值是缺失值,不会用于proc means等的计算,但是可以区分。您可以使用if missing(x) then ...类型语法来确定x是否缺失(if x=.将不起作用,因为这些值都不是.)。这仅适用于单个字符。如果您愿意,可以将其与??方法结合使用(然后missing语句中的任何内容都将失去常规.

如上所示,您可以使用missing;清除这些字母的处理方式,否则它会在您的会话中保留。

相关问题