【问题标题】:How to write raw data to import in SAS如何编写要在 SAS 中导入的原始数据
【发布时间】:2022-01-20 21:04:20
【问题描述】:

我想要以下输出,但无法获得。我不明白如何编写数据线和输入选项的原始数据。请给我一些建议。

data dt00;
input Flavor $14. 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
------------------------------;

【问题讨论】:

    标签: input import sas


    【解决方案1】:

    这里有三个选项。

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

    data dt00;
      input Flavor &:$14. 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 :$14. 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 :$14. 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"
    

    【讨论】:

      【解决方案2】:

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

      data dt00;
      infile datalines delimiter = "|";
      input Flavor :$14. 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
      

      【讨论】:

      • 非常感谢!是的,我必须学习使用分隔符..
      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 2015-02-26
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 2015-01-02
      相关资源
      最近更新 更多