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

标签 sas

我想合并 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/

相关文章:

odbc - 没有凭据的 SAS odbc 连接

SAS:PROC EXPORT中的限制变量

error-handling - SAS: "ERROR: Rename of temporary member for WORK.XXXX.DATA failed"

json - 使用 SAS BASE 解析来自 JSON 的变量中带有 unicode 字符的表

sas - 如何在 SAS University Edition 中直接导入 PC 上的文件?

sas - 在 DI 上运行导入的 EG 时未找到格式错误

sql - 使用PROC SQL查找与SAS中给定字符串最多一个字母不同的字符串

sas - SAS 中数值的长度

date - sas 日期 - 将 today() 转换为 yyyymmdd 格式

sas - 以编程方式编译 SAS SCL 代码