SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 536|回复: 2
打印 上一主题 下一主题

怎样把部分观察值变成一个新变量?多谢了

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-4-7 06:35:16 | 只看该作者

怎样把部分观察值变成一个新变量?多谢了

比如这样一组数据

ID Relationship Age Job Household
101 1 50 2 1
102 3 24 6 1
103 1 34 3 2
105 3 4 . 2
106 3 6 . 2
107 5 4 1 2
ID 表示个人代号, Household 表示家庭代号,相同的是一家人,Relationship中1表示家长,3表示孩子,5表示其他成员。Age 连续变量, Job是分类变量. 点号,表示缺失值。

现在想把一个家庭中的家长年龄, Job,当成一个独立变量和他孩子对应起来,其他成员不考虑。比如
ID Relationship Age Job Household ParentAge ParentJob
102 3 24 6 1 50 2
105 3 4 . 2 34 3
106 3 6 . 2 34 3
107 5 4 1 2 .    .

应该怎样操作呢,谢谢各位朋友
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-4-7 11:32:02 | 只看该作者

重复啊重复

每次你们在不同的论坛贴同一个问题,我都要从一个论坛把回答再贴到另一个论坛。唉。
[code:3df62]
data old;
input ID$ Relationship Age Job $char1. Household;
cards;
101 1 50 2 1
102 3 24 6 1
103 1 34 3 2
105 3 4 . 2
106 3 6 . 2
107 5 47 1 2
;
run;


proc sql;
  create table temp as
  select age,job,household
  from old
  where relationship=1
  ;

  select old.*,
          case
            when old.relationship=3 then temp.age
            else .
            end   as ParentAge,
          case
            when old.relationship=3 then temp.job
            else '.'
            end   as ParentJob
  from old,temp
  where temp.household=old.household and old.relationship<>1
  ;[/code:3df62]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-4-8 02:51:09 | 只看该作者

怎么看不见回复?

一点击就是广告?衷心谢谢AHUIGE的帮助!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-9 03:11 , Processed in 0.113401 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表