这是一个后续矿山的早期问题。 移调逗号分隔场
我得到的特定情况下工作,但现在我有一个更大的数据集,所以阅读它在datalines声明答案是不是一种选择。 我有类似于此过程中创建一个数据集:
data MAIN;
input ID STATUS STATE $;
cards;
123 7 AL,NC,SC,NY
456 6 AL,NC
789 7 ALL
;
run;
这里有两个问题:1:我需要一个单独的排在该州第2列每个状态:注意观察第三次说“ALL”。 我需要更换与特定的国家,我可以从一个单独的数据集(下)获得的列表。
data STATES;
input STATE $;
cards;
AL
NC
SC
NY
TX
;
run;
所以,这里是我试图似乎并不奏效的过程。 首先,我创建所需归集国家名单,并表示美国的计数。
proc sql;
select distinct STATE into :all_states separated by ','
from STATES;
select count(distinct STATE) into :count_states
from STATES;
quit;
其次,我试图归咎于该名单,其中“ALL”值出现状态。 这是出现的第一个错误的位置。 我怎样才能确保变量状态的新值足够长的时间? 此外,如何处理逗号?
data x_MAIN;
set MAIN;
if STATE='ALL' then STATE="&all_states.";
run;
最后,我用扫描功能在同一时间在一个国家阅读。 我也在这里得到一个错误,但我认为固定上述部分可以解决这个问题。
data x_MAIN_mod;
set x_MAIN;
array state(&count_states.) state:;
do i=1 to dim(state);
state(i) = scan(STATE,i,',');
end;
run;
先谢谢您的帮助!