gpt4 book ai didi

SAS:从文本字符串中提取用破折号分隔的 ID

转载 作者:行者123 更新时间:2023-12-04 22:07:21 24 4
gpt4 key购买 nike

我有一个包含一个串联文本字段的数据集。我试图在 SAS 9.4 中将其分成三个文本列。

Obs Var1
1 MAY12-KANSAS-ABCD6194-XY7199-BRULE
2 JAN32-OHIO-BZ5752-GARY

我观察 1 的输出应该是这样的:
Obs   Date   State   ID
1 MAY12 KANSAS ABCD6194-XY7199-BRULE

这是我所拥有的,适用于日期和状态。但是,我无法让第三部分(ID)忽略分隔符:
data have;
input Var1 &$64.;
cards;
MAY12-KANSAS-ABCD6194-XY7199-BRULE
JAN32-OHIO-BZ5752-GARY
;
run;
data need;
length id $16;
set have;
date = scan(var1,1,'-','o');
state = scan(var1,2,'-','o');
id = scan(var1,3,'-','');
run;

最佳答案

获取包含多个分隔符的单词的另一种不同方法是使用 call scan .它会告诉您第 n 个单词的位置(和长度,我们忽略)(并且可以向前或向后,因此这使您能够在字符串的中间进行搜索)。

为这个特殊情况实现它非常简单:

data want;
set have;
length
date $5
state $20
id $50
;
date = scan(var1,1);
state= scan(var1,2);
call scan(var1,3,position,length);
id = substr(var1,position);
run;
positionlengthcall scan 的变量填充我们可以使用的值。 (我们也可以用这种方式完成 date 和 state,但它比使用函数更有效。)

关于SAS:从文本字符串中提取用破折号分隔的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30757811/

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