如何根据公共 ID 合并来自 table 的行? SAS公司
How to merge rows from table based on a common ID? SAS EG
我知道那里有一些类似的问题,但作为一个菜鸟,我想找到适合我的具体代码。
在 SAS EG 项目中,我有一个名为 WORK.QUERY_FOR_TABLE1 的查询结果,其中包含 4 列:
ID1 ID2 TEXT1 TEXT2
由于每个 ID1 有多个 ID2,这是唯一的,我想合并基于 ID1 的行和包含带有分隔符的文本的列,例如:
来源:
ID1 ID2 TEXT1 TEXT2
1 1 ABC DEF
1 2 GHI JKL
2 1 ABC DEF
结果:
ID1 TEXT
1 ABC,DEF,GHI,JKL
2 ABC
对代码有任何想法(包括调用我在项目中已有的查询结果)吗?
谢谢!
您必须将一些实际的 SAS 代码添加到您的 Enterprise Guide 项目中才能执行此操作。
创建一个新变量并使用 CATX() 函数构建字符串。使用BY分组处理。
data want;
do until (last.id1);
set QUERY_FOR_TABLE1 ;
by id1 ;
length text 0;
text=catx(',',text,text1,text2);
end;
keep id1 text;
run;
我知道那里有一些类似的问题,但作为一个菜鸟,我想找到适合我的具体代码。
在 SAS EG 项目中,我有一个名为 WORK.QUERY_FOR_TABLE1 的查询结果,其中包含 4 列: ID1 ID2 TEXT1 TEXT2
由于每个 ID1 有多个 ID2,这是唯一的,我想合并基于 ID1 的行和包含带有分隔符的文本的列,例如: 来源:
ID1 ID2 TEXT1 TEXT2
1 1 ABC DEF
1 2 GHI JKL
2 1 ABC DEF
结果:
ID1 TEXT
1 ABC,DEF,GHI,JKL
2 ABC
对代码有任何想法(包括调用我在项目中已有的查询结果)吗?
谢谢!
您必须将一些实际的 SAS 代码添加到您的 Enterprise Guide 项目中才能执行此操作。
创建一个新变量并使用 CATX() 函数构建字符串。使用BY分组处理。
data want;
do until (last.id1);
set QUERY_FOR_TABLE1 ;
by id1 ;
length text 0;
text=catx(',',text,text1,text2);
end;
keep id1 text;
run;