读取逗号值
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.;
如何在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.;