sas - 如果多个 id 包括添加一些变量,则在 SAS 中合并来自多行的数据
问题描述
希望您能提供解决方案,无论是 SQL 还是数据步骤。
如果客户 ID 相同,我需要合并多行,并添加一些带代码的变量。
我有以下静态变量容器:
%let FirstColSuffix=<Somecode1>
%let SecondColSuffix=#<SomeCode2>
%let ThirdColSuffix=#<SomeCode3>
数据有;
Customerid Firstcol Secondcol Thirdcol
1 A1 A2 A3
2 B1 B2 B3
2 C1 C2 C3
2 D1 D2 D3
3 E1 E2 E3
3 F1 F2 F3
3 G1 G2 G3
3 H1 H2 H3
数据需要;
Customerid Firstcol Secondcol Thirdcol Result
1 A1 A2 A3 A1<SomeCode1>A2#<SomeCode2>A3#<SomeCode3>
2 B1 B2 B3 B1<SomeCode1>B2#<SomeCode2>B3#<SomeCode3>
2 C1 C2 C3 B1<SomeCode1>B2#<SomeCode2>B3#<SomeCode3>C1<SomeCode1>C2#<SomeCode2>C3#<SomeCode3>
2 D1 D2 D3 B1<SomeCode1>B2#<SomeCode2>B3#<SomeCode3>C1<SomeCode1>C2#<SomeCode2>C3#<SomeCode3>D1<SomeCode1>D2#<SomeCode2>D3#<SomeCode3>
3 E1 E2 E3 E1<SomeCode1>E2#<SomeCode2>E3#<SomeCode3>
3 F1 F2 F3 E1<SomeCode1>E2#<SomeCode2>E3#<SomeCode3>F1<SomeCode1>F2#<SomeCode2>F3#<SomeCode3>
3 G1 G2 G3 E1<SomeCode1>E2#<SomeCode2>E3#<SomeCode3>F1<SomeCode1>F2#<SomeCode2>F3#<SomeCode3>G1<SomeCode1>G2#<SomeCode2>G3#<SomeCode3>
3 H1 H2 H3 E1<SomeCode1>E2#<SomeCode2>E3#<SomeCode3>F1<SomeCode1>F2#<SomeCode2>F3#<SomeCode3>G1<SomeCode1>G2#<SomeCode2>G3#<SomeCode3>H1<SomeCode1>H2#<SomeCode2>H3#<SomeCode3>
我只需要最后一个客户 ID 的输出(但在“结果”列的最后一行输出所有匹配的客户 ID 的数据。
所以在这个例子中,我需要第 1、4 和 8 行
任何人都可以帮忙吗?:-)
解决方案
使用retain
和按组处理。对于我们读取的每一行,我们将不断地连接result
到自身,并将该值向前推进。在最后一个客户 ID 处,我们将输出。在第一个客户 ID 处,result
被重置。
data want;
set have;
by Customerid;
length Result $500.;
retain Result;
if(first.Customerid) then call missing(Result);
Result = cats(Result, FirstCol, "&FirstColSuffix", SecondCol, "&SecondColSuffix", ThirdCol, "&ThirdColSuffix");
if(last.Customerid);
run;
推荐阅读
- r - 混合效应模型的 Cohen d
- c++ - QApplication setFont() 和 QTimer
- mapping - 如何仅根据其 URL 验证来自 Wiremock 部署到远程主机的请求?
- assembly - 使用 int 13h 02h 加载在 qemu 和 bochs 中可以正常工作,但在硬件上不行
- python - 迭代切片数组的计算效果
- html - 无法让背景图片显示在网站上
- python - 如何在 Python 中删除 \n 换行符?
- jquery - 单击时显示和隐藏工具提示 (Tipso.js)
- ios - 本地通知与 APNS:我可以有一个计时器定期获取通知并在本地安排它们以避免使用 APNS?
- global-variables - 优化的 ELF 二进制文件中的全局变量名称