楼主: zhushji
3424 3

利用SAS编程怎样解决复杂数据内变量转置问题 [推广有奖]

  • 0关注
  • 2粉丝

已卖:621份资源

博士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
2824 个
通用积分
3.7251
学术水平
1 点
热心指数
4 点
信用等级
0 点
经验
4309 点
帖子
171
精华
0
在线时间
515 小时
注册时间
2008-10-30
最后登录
2025-12-23

楼主
zhushji 发表于 2009-9-3 10:31:34 |AI写论文
3论坛币
急求各位高手来指教
     我现在有类似这样一份数据,举例:
FAMILY_NOITEM_NAMECOSTS
4307030620010014注射费14
4307030620010014B超58
4307030620010014诊疗费22
4307030620010015诊疗费22
4307030620010016护理费74
4307030620010016床位费14
4307030620010016维生素B22.6
4307030620010016氯化钠0.7
4307030620010017葡萄糖酸钙10.8
等等....一千多个数据我已通过EXCEL导入到SAS里,
我想通过转置的方式把各种费用作为变量,FAMLY_NO这个变量里每个编号的COSTS作为一条记录;即要转化成这样的结果:
FAMILY_NO注射费B超 诊疗费 护理费 床位费 等等...
430703062001001414582200
430703062001001522
43070306200100167474
4307030620010017
等等....
然后,把维生素B2、氯化钠、葡萄糖酸钙等归为药费这一个变量;B超等归纳为检查费这个变量....
感谢!

最佳答案

xiaosanmao 查看完整内容

如果医院收费项目不多的话,手动下吧,说实在的,我写完这段 自己都恶心了 data a; length FAMILY_NO $20. ITEM_NAME $10. ; input FAMILY_NO ITEM_NAME COSTS @@; cards; 4307030620010014 注射费 14 4307030620010014 B超 58 4307030620010014 诊疗费 22 4307030620010015 诊疗费 22 4307030620010016 护理费 74 4307030620010016 床位费 14 4307030620010016 维生素B2 2.6 4307030620010016 氯化钠 0.7 ...
关键词:SAS编程 复杂数据 Family costs 维生素B2 SAS数据分析救助

回帖推荐

xiaosanmao 发表于2楼  查看完整内容

如果医院收费项目不多的话,手动下吧,说实在的,我写完这段 自己都恶心了 data a; length FAMILY_NO $20. ITEM_NAME $10. ; input FAMILY_NO ITEM_NAME COSTS @@; cards; 4307030620010014 注射费 14 4307030620010014 B超 58 4307030620010014 诊疗费 22 4307030620010015 诊疗费 22 4307030620010016 护理费 74 4307030620010016 床位费 14 4307030620010016 维生素B2 2.6 4307030620010016 氯化钠 0.7 ...

本帖被以下文库推荐

沙发
xiaosanmao 发表于 2009-9-3 10:31:35
如果医院收费项目不多的话,手动下吧,说实在的,我写完这段 自己都恶心了

data a;
length FAMILY_NO $20. ITEM_NAME $10. ;
input FAMILY_NO ITEM_NAME COSTS @@;
cards;
4307030620010014 注射费 14
4307030620010014 B超 58
4307030620010014 诊疗费 22
4307030620010015 诊疗费 22
4307030620010016 护理费 74  
4307030620010016 床位费 14  
4307030620010016 维生素B2 2.6  
4307030620010016 氯化钠 0.7  
4307030620010017 葡萄糖酸钙 10.8  
;run;
data b;
set a;
ARRAY  x(8) x1-x8;
DO i = 1 TO 8;
x(i) =0;
END;drop i item_name costs;
if item_name="注射费" then x1=costs ;
if item_name="B超" then x2=costs;
if item_name="诊疗费" then x3=costs;
if item_name="护理费" then x4=costs;
if item_name="床位费" then x5=costs;
if item_name="维生素B2" then x6=costs;
if item_name="氯化钠" then x7=costs;
if item_name="葡萄糖酸钙" then x8=costs;
run;
proc sql;
create table final as
select FAMILY_NO,
sum(x1) as x1 label= "注册费" ,
sum(x2) as x2 label= "检查费" ,
sum(x3) as x3 label= "诊疗费",
sum(x4) as x4 label= "护理费",
sum(x5) as x5 label= "床位费",
sum(x6)+sum(x7)+sum(x8) as x6 label= "药费"
from b group by family_no;
quit;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
shawfee 发表于 2009-9-3 10:57:21
用proc transpose可以实现吧
愛是恆久忍耐,又有恩慈;愛是不嫉妒;愛是不自誇,不張狂,不作害羞的事,不求自己的益處,不輕易發怒,不計算人的惡,喜歡不義,只喜歡真理;凡事包容,凡事相信,凡事盼望,凡事忍耐;愛是永不止息。

板凳
flutter88 发表于 2009-9-3 22:06:58
用proc transpose,简单方便

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 12:24