gpt4 book ai didi

sas - 转置逗号分隔字段

转载 作者:行者123 更新时间:2023-12-04 19:55:25 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据集,并且正在使用 SAS Enterprise Guide 6.3:

data have;
input id state $;
cards;
134 NC,NY,SC
145 AL,NC,NY,SC
;
run;

我有另一个数据集,每个州的每个 ID 都有几个指标,但我只需要提取 have 数据集第二列中列出的州的数据。

data complete;
input id state $ metric;
cards;
134 AL 5
134 NC 4.3
134 NY 4
134 SC 5.5
145 AL 1.3
145 NC 1.3
145 NY 1.5
145 SC 1.1
177 AL 10
177 NC 74
177 NY 23
177 SC 33
;
run;

我考虑过使用 trnwrd 将逗号替换为 ', ' 并连接开始和结束引号以使列表成为字符列表,这样我就可以使用 WHERE IN 语句。但是,我认为如果我能以某种方式将逗号分隔列表转换为这样的内容会更有帮助:

data have_mod;
input id state $;
cards;
134 NC
134 NY
134 SC
145 AL
145 NC
145 NY
145 SC
;
run;

然后我可以简单地将此表连接到完整的数据表以获得我需要的子集(如下)。

data want;
input id state $ metric;
cards;
134 NC 4.3
134 NY 4
134 SC 5.5
145 AL 1.3
145 NC 1.3
145 NY 1.5
145 SC 1.1
;
run;

有什么想法吗?谢谢。

最佳答案

我会完全按照您的建议进行转换 - 除了我会以那种方式阅读它。

data have;
infile datalines truncover dlm=', ';
length state $2;
input id @; *read in the id for that line;
do until (state=''); *keep reading in until state is missing = EOL;
input state $ @;
if not missing(state) then output;
end;
cards;
134 NC,NY,SC
145 AL,NC,NY,SC
;
run;

或者,您可以扫描第一个状态代码。

data want_to_merge;
set have;
state_first = scan(state,1,',');
run;

SCAN 是等同于读取分隔文件的函数。

关于sas - 转置逗号分隔字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27363512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com