如何在SAS中阅读以下数据?
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;
代码:
SELECT `username`, `user_id` FROM users
LEFT JOIN (select stu_first_name as username, stu_master_user_id from `stu_info`
LEFT JOIN stu_master ON stu_master_stu_info_id = stu_info_id) st ON st.stu_master_user_id = users.user_id
WHERE `user_id` IN (1, 2, 3, 4) AND user_type = 'S'
UNION
SELECT `username`, `user_id` FROM users
LEFT JOIN (select emp_first_name as username, em_user_id
from `emp_info`
LEFT JOIN emp_master ON em_emp_info_id = emp_info_id) emp ON emp.em_user_id = users.user_id
WHERE `user_id` IN (1, 2, 3, 4) AND user_type = 'E'
答案 0 :(得分:2)
你的问题是*之后的空格也计算在数字上,所以如果你有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.;