楼主: manet
3816 3

[有偿编程] sas生成新变量求助 [推广有奖]

  • 0关注
  • 0粉丝

已卖:2份资源

大专生

33%

还不是VIP/贵宾

-

威望
0
论坛币
1171 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
184 点
帖子
15
精华
0
在线时间
84 小时
注册时间
2005-8-19
最后登录
2022-11-5

楼主
manet 发表于 2016-3-23 14:33:48 |AI写论文
50论坛币
部分数据情况如下:

QQ截图20160323142728.jpg

想要生成一个新变量mbfamily,在family变量值相同的观测值中,只要有一个mb等于1,则mbfamily=1
现在的想法是:
by FamilyId;
where [first._FamilyId and last._FamilyId];
mbfamily=(max(of mb{*}));
或者
by FamilyId;
if [first._FamilyId and last._FamilyId] then mbfamily=(max(of mb{*}));
由于刚接触sas,所以只有个思路,但是不知道正确的语句应该是怎样的,求大神指点/(ㄒoㄒ)/~~


最佳答案

caibirdcnb 查看完整内容

proc sql; create table temp as select family,sum(mb) as sum_mb,count(*) as N from dataset group by family; quit; 然后join你的dataset和temp: proc sql; create table new_dataset as select * from dataset as a left join temp as b on a.family=b.family; quit; 接着做条件判断: data new_dataset; set new_dataset; if sum_mb>=1 then mbfamily=1; else mbfamily=0; run;
关键词:新变量 Family First Where FIRS family where

沙发
caibirdcnb 发表于 2016-3-23 14:33:49
proc sql;
create table temp as
select family,sum(mb) as sum_mb,count(*) as N
from dataset
group by family;
quit;

然后join你的dataset和temp:
proc sql;
create table new_dataset as
select *
from dataset as a left join temp as b
on a.family=b.family;
quit;

接着做条件判断:
data new_dataset;
set new_dataset;
if sum_mb>=1 then mbfamily=1;
else mbfamily=0;
run;

藤椅
manet 发表于 2016-3-23 15:36:21
caibirdcnb 发表于 2016-3-23 15:12
proc sql;
create table temp as
select family,sum(mb) as sum_mb,count(*) as N
谢谢!!!
能问下我最后输出这个文件的语句应该是什么呢
我用这个没弄出来:接触sas不到3天的废跪求
proc export data=a outfile="F:\111.csv"
        dbms=csv replace;
        run;

板凳
manet 发表于 2016-3-23 15:58:32
弄明白了,谢谢大神!!!

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

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