楼主: ma_tklab
4799 3

proc expand 問題 [推广有奖]

  • 0关注
  • 0粉丝

高中生

15%

还不是VIP/贵宾

-

威望
0
论坛币
13 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
167 点
帖子
23
精华
0
在线时间
10 小时
注册时间
2009-6-7
最后登录
2013-4-10

楼主
ma_tklab 发表于 2009-6-7 20:59:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有八千多個observation
每一個obs有的變數是
d0 d30 d90 d270 d360 d540 d720 d1080
y0 y30 y90 y270 y360 y540 y720 y1080

其中yi 是 在日子 di 日時量度的身高
d0 = 0 for all observation
d30 是一個接近30 的數字 , 例如27 28 32 或剛好30等
如此類推
如果我想用proc expand (或其他方法也可以)
在每一個obs 上面加上 e30 e90 e270 e360 e540 e720 e1080
ei= 在 第i天時量度的身高,
應該如何做?
謝謝
<script type="text/javascript"></script><script src="https://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script><script></script>
二维码

扫码加我 拉你入群

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

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

关键词:expand EXP ROC observation observat proc expand

回帖推荐

林嘉祥 发表于4楼  查看完整内容

抛块砖头1、先把数据弄成竖的(你现成的数据多半得转置一下)data xxx(keep=id x:);    input id $         d0 d30 d90 d270 d360 d540 d720 d1080         y0 y30 y90 y270 y360 y540 y720 y1080;    array d[*] d:;    array y[*] y:;    do _n_=1 to dim(d);        x1 ...

本帖被以下文库推荐

沙发
kofsphere 发表于 2009-6-7 22:11:00
楼主我不明白你在讲什么,至少把问题说清楚了
你是想用proc expand来做aggregation?

藤椅
ma_tklab 发表于 2009-6-7 23:00:00

即是用proc expand做interpolation

例如第1個obs是

0  31  92 267 359 545 733 1091

2.7 3.8 4.9 6.1 7.1 8.9 9.5 11.7

之後想用interpolation來估計出

0 30 90 270 360 540 720 1080對應的y值

板凳
林嘉祥 发表于 2009-6-9 07:35:00
抛块砖头
1、先把数据弄成竖的(你现成的数据多半得转置一下)
data xxx(keep=id x:);
    input id $
        d0 d30 d90 d270 d360 d540 d720 d1080
        y0 y30 y90 y270 y360 y540 y720 y1080;
    array d
  • d:;
        array y
  • y:;
        do _n_=1 to dim(d);
            x1 = d[_n_];
            x2 = y[_n_];
            output xxx;
        end;
    datalines;
    0001 0 31 92 267 359 545 733 1091 2.7 3.8 4.9 6.1 7.1 8.9 9.5 11.7
    0002 0 27 89 270 363 540 718 1055 2.7 3.8 4.9 6.1 7.1 8.9 9.5 11.7
    ;
    2、把关键点位30,90,270,360,540,720,1080的身高设为缺失值
    data yyy;
        array aa[7] _temporary_ (30,90,270,360,540,720,1080);
        do until(last.id);
            set xxx(keep=id);
            by id;
        end;
        do _n_=1 to dim(aa);
            x1 = aa[_n_];
            retain x2 .;
            output;
        end;

    3、合并前两步的数据
    data zzz;
        merge yyy xxx;
        by id x1;

    4、EXPAND!
    proc expand data=zzz out=www extrapolate;
        convert x2;
        by id;
        id x1;

    5、再转置得到你想要得变量e30-e1080
    proc transpose data=www(where=(x1 in (30,90,270,360,540,720,1080))) out=www1(drop=_name_) prefix=e;
        by id;
        id x1;
        var x2;
    run;
  • 已有 1 人评分经验 论坛币 收起 理由
    bakoll + 3 + 3 精彩帖子

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

    平生无大志,唯吃饱ZB,喂饱JB耳!

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

    本版微信群
    加好友,备注cda
    拉您进交流群
    GMT+8, 2025-12-25 22:58