如何写入原始数据以在 SAS 中导入

How to write raw data to import in SAS

我想要以下输出,但无法得到。 datalines 和 input options 的原始数据怎么写,不懂。请指教

data dt00;
input Flavor . Quantity : comma.;
datalines;
CHOCOLATE CHIP 10,453
OATMEAL 12,187
PEANUT BUTTER 11,546
SUGAR 12,331
;
proc print data = dt00; run;

* output-----------------------
Flavor              Quantity
CHOCOLATE CHIP      10453
OATMEAL 12,187          .
------------------------------;

* I want-----------------------
Flavor         Quantity
CHOCOLATE CHIP 10453
OATMEAL        12187
PEANUT BUTTER  11546
SUGAR          12331
------------------------------;

在infile语句中使用delimiter选项使用另一个分隔符,并在Flavor列中添加:修饰符

data dt00;
infile datalines delimiter = "|";
input Flavor :. Quantity : comma.;
datalines;
CHOCOLATE CHIP|10,453
OATMEAL|12,187
PEANUT BUTTER|11,546
SUGAR|12,331
;

CHOCOLATE CHIP 10453
OATMEAL 12187
PEANUT BUTTER 11546
SUGAR 12331

这里有三个选项。

在变量后面放置两个或更多空格,而不是可以包含空格,并使用 & 输入修饰符。但是您需要确保值的中间没有两个相邻的嵌入空格。还要确保在 INPUT 语句中的任何信息上使用 : 修饰符。

data dt00;
  input Flavor &:. Quantity :comma.;
datalines;
CHOCOLATE CHIP  10,453
OATMEAL   12,187
PEANUT BUTTER   11,546
SUGAR   12,331
;

使用不同的分隔符。您需要在 INFILE 语句中设置。再次确保 INPUT 语句中列出的所有信息都使用了 : 修饰符,因此输入仍然是列表模式。

data dt00;
  infile datalines dlm='|';
  input Flavor :. Quantity :comma.;
datalines;
CHOCOLATE CHIP|10,453
OATMEAL   |12,187
PEANUT BUTTER   |11,546
SUGAR   |12,331
;

使用 DSD 选项,使用您想要的任何分隔符,并引用包含分隔符的值。确保行中每个值之间只有一个分隔符,因为使用 DSD 模式时,相邻的分隔符意味着它们之间有一个空值。

data dt00;
  infile datalines dsd dlm=' ';
  input Flavor :. Quantity :comma.;
datalines;
"CHOCOLATE CHIP" 10,453
OATMEAL 12,187
"PEANUT BUTTER" 11,546
SUGAR 12,331
;

如果您从程序中写入数据,那么您应该使用 DSD 选项,PUT 语句会自动在需要的地方添加引号。

data _null_;
  file csv dsd ;
  set dt00;
  put flavor quantity;
  format quantity comma.;
run;

结果

CHOCOLATE CHIP,"10,453"
OATMEAL,"12,187"
PEANUT BUTTER,"11,546"
SUGAR,"12,331"