阅读逗号值

时间:2016-05-30 06:42:10

标签: sas comma

如何在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'

1 个答案:

答案 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.;