读取逗号值

Reading comma values

如何在SAS中读取以下数据?

Yellowstone           ID/MT/WY 1872 *  4,065,493
Everglades            FL 1934 *        1,398,800
Yosemite              CA 1864 *          760,917
Great Smoky Mountains NC/TN 1926 *       520,269
Wolf Trap Farm        VA 1966 *              130

最后一列我只得到:

406549
1
.
520
.

代码:

data math;
    input 
        parkname $ 1-22
        state $
        year
        asteriks $
        value COMMA9.;
    datalines;
Yellowstone           ID/MT/WY 1872 *  4,065,493
Everglades            FL 1934 *        1,398,800
Yosemite              CA 1864 *          760,917
Great Smoky Mountains NC/TN 1926 *       520,269
Wolf Trap Farm        VA 1966 *              130
;

proc print data=math;
run;

你的问题是 * 后面的空格也被计算在数字中,所以如果你有 9 个空格,数字是空的,8 个空格你只得到第一个数字,依此类推...

编辑:

Google 了一下,找到了更简单的解决方案。添加 & 告诉 sas 忽略多个空格,所以

value & COMMA9.;

应该用最简单的方法解决这个问题,至少在你的测试程序中是这样。

编辑结束

我能想到的最简单的解决方案是删除 * 后除一个空格以外的所有空格,或添加另一个分隔符(例如 #)或增加值的大小:

 Yellowstone           ID/MT/WY 1872 * 4,065,493
 Everglades            FL 1934 * 1,398,800

data math;
infile datalines delimiter='#'; 
 ...
Yellowstone#ID/MT/WY#1872#*#4,065,493
...

value COMMA20.;