请选择 进入手机版 | 继续访问电脑版
楼主: 拖鞋西西
3702 7

[程序分享] 求助 根据id将多条数据合并为一条数据 [推广有奖]

  • 0关注
  • 0粉丝

高中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
275 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
159 点
帖子
5
精华
0
在线时间
70 小时
注册时间
2016-12-24
最后登录
2022-3-22

拖鞋西西 发表于 2018-5-11 19:11:26 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我想将id相同的记录合为一条,原数据是这样的:
QQ截图20180511190310.png




想以id为根据,id相同的,把var1、var2、var3加在后面,变成如下这种:

QQ截图20180511190729.png


请问是用proc transpose过程吗?如果是的话,其中的prefix、var、id等参数应该怎么定义呢?如果不是的话,应该用什么语句呢?
谢谢大家!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据合并 Transpose Trans pose VaR

拖鞋西西 发表于 2018-5-11 19:13:02 |显示全部楼层 |坛友微信交流群
数据在这里~~

result.xlsx

8.72 KB

原数据

example.xlsx

10 KB

结果形式

使用道具

Tigflanker 发表于 2018-5-12 11:25:49 |显示全部楼层 |坛友微信交流群
我觉得你干脆transpose &N.次,把结果再一起merge起来的好,prefix = con1_ 这样;

你这用data步first、last + array也能做,就是不怎么直观

使用道具

枫桥の 发表于 2020-11-14 10:59:24 |显示全部楼层 |坛友微信交流群
Tigflanker 发表于 2018-5-12 11:25
我觉得你干脆transpose &N.次,把结果再一起merge起来的好,prefix = con1_ 这样;

你这用data步first、 ...
妈耶,不详细介绍一下,我都不知道去哪学……transpose太麻烦了

使用道具

wuqian12345 发表于 2021-11-8 09:18:15 |显示全部楼层 |坛友微信交流群
请问楼主的问题有解决嘛,我也遇到了相同的问题

使用道具

HXAI102230 在职认证  发表于 2021-11-8 16:02:27 |显示全部楼层 |坛友微信交流群
data temp1;
  set manyper(rename=(var1=var1n var3=var3n));
  by id;
        if first.id then n=0;
        n+1;
        var1=put(var1n,8.);
        var3=put(var3n,mmddyy10.);
        drop no name var1n var3n;
run;

proc transpose data=temp1 out=temp2;
  by id n;
  var var1 var2 var3;
run;

data temp3;
  set temp2;
  namen=catx('_',_name_,n);
  drop n _name_ _label_;
run;

proc sort data=temp3;
  by id;
run;

proc transpose data=temp3 out=oneper;
  by id;
  id namen;
  var COL1;
run;

使用道具

HXAI102230 在职认证  发表于 2021-11-9 11:18:34 |显示全部楼层 |坛友微信交流群
proc sort data=raw out=temp1;
by id;
run;

data temp2;  
set temp1(drop=no name rename=(var1=var1n var3=var3n));  
by id;  
retain n;
if first.id then n=0;
n+1;  
var1=put(var1n,8.);
var3=put(var3n,mmddyy8.);
drop var1n var3n;
run;

proc sort data=temp2 out=temp2;
by id n;
run;

data temp3;
  length id 8 varn varv $8;
  set temp2;
  by id n;
  if first.n then varv=' ';
  varv=var1;varn=catx('_','var1',n);output;
  varv=var2;varn=catx('_','var2',n);output;
  varv=var3;varn=catx('_','var3',n);output;
  drop n var1-var3;
run;

proc transpose data=temp3 out=oneper;
  by id;
  id varn;
  var varv;
run;

使用道具

HXAI102230 在职认证  发表于 2021-11-9 11:19:12 |显示全部楼层 |坛友微信交流群
用data step也可以试一下

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 01:23