gpt4 book ai didi

sas - 如何通过提取现有数值变量的部分值来在SAS中创建新变量?

转载 作者:行者123 更新时间:2023-12-03 04:33:48 24 4
gpt4 key购买 nike

我想合并 SAS 中的两个数据集,但它们没有公共(public)变量。一个数据集具有“subject_id”变量,而另一个数据集具有“mom_subject_id”变量。这两个变量都是 9 位代码,代码中间只有 3 位数字,具有共同含义,这就是我在合并两个数据集时需要匹配的内容。

我想要做的是在每个数据集中创建一个新的公共(public)变量,该变量只是主题 ID 中的 3 位数字。这 3 位数字将始终位于 9 位主题 ID 中的同一位置,因此我想知道是否有办法从变量中提取这 3 位数字来创建新变量。

谢谢!

最佳答案

SQL(使用数据步骤代码中的示例数据):

proc sql;
create table want2 as
select a.subject_id, a.other, b.mom_subject_id, b.misc
from have1 a JOIN have2 b
on(substr(a.subject_id,4,3)=substr(b.mom_subject_id,4,3));
quit;

数据步骤:

 data have1;
length subject_id $9;
input subject_id $ other $;
datalines;
abc001def other1
abc002def other2
abc003def other3
abc004def other4
abc005def other5
;

data have2;
length mom_subject_id $9;
input mom_subject_id $ misc $;
datalines;
ghi001jkl misc1
ghi003jkl misc3
ghi005jkl misc5
;

data have1;
length id $3;
set have1;
id=substr(subject_id,4,3);
run;

data have2;
length id $3;
set have2;
id=substr(mom_subject_id,4,3);
run;

Proc sort data=have1;
by id;
run;

Proc sort data=have2;
by id;
run;

data work.want;
merge have1(in=a) have2(in=b);
by id;
run;

关于sas - 如何通过提取现有数值变量的部分值来在SAS中创建新变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857769/

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