首页 文章

如何阅读信息数据:$ 1,000.1M至1000.1

提问于
浏览
1

数据集包括一个数字列表:

$1,000.1M
      $100.5M
    $1,002.3M
     $23.4M
     $120.3M

我想在SAS中将变量读作数字

结果应该是:

Money(millions)
   1000.1
   100.5
   1002.3
   23.4
   120.3

我使用COMMAw.d来读取这些数据,但无法运行

代码是:

input Money(millions) COMMA9.1;
    run;

如何修改?

非常感谢你!

2 回答

  • 1

    我认为你最好把它作为一个角色来阅读,然后按照德米特里的回答处理它 . 但如果它是一个单独的列,你可以读取它,如果你将分隔符设置为M.我怀疑这将在一个演示中工作,但不是在你的完整过程中 .

    data input;
        informat moneyRaw dollar8.;    
        infile datalines dlm='M';
        input moneyRaw ;
        *moneyRaw = moneyRaw * (1000000);
        format moneyRaw dollar32.;
        datalines;
    $1,000.1M
    $100.5M
    $1,002.3M
    $23.4M
    $120.3M
    ;
    run;
    
  • 0

    COMMA informat不希望像'M'这样的字母,它只删除逗号,空格,美元符号,百分号,破折号和近括号 . 您可以通过删除不需要的所有字符将原始字符串转换为包含数字的字符串:

    data input;
        length moneyRaw $200;    
        infile datalines;
        input moneyRaw $;
    
        datalines;
    $1,000.1M
    $100.5M
    $1,002.3M
    $23.4M
    $120.3M
    ;
    run;
    
    data result;
        set input;
       * "k" modifier inverts the removed characters;
        money = input(compress(moneyRaw,"0123456789.","k"),best.);
    run;
    

    或者,如果你知道正则表达式,你可以为以后阅读它的人添加一些关于代码的吸引力:

    data resultPrx;
        set input;
        moneyUpdated = prxChange("s/^\$(\d+(,\d+)*(\.\d+)?)M$/$1/",1,strip(moneyRaw));
        money = input(compress(moneyUpdated,','),best.);
    run;
    

相关问题