全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7264 7
2018-08-01
求助,如何将时间序列的数据转换成面板数据,例如
A 2000
B 2001
C 2003
D 2005
如何将其转换为
A 2000 1
A 2001 1
A 2002 1
A 2003 1
A 2004 1
A 2005 1
B 2000 0
B 2001 1
B 2002 1
B 2003 1
B 2004 1
B 2005 1

C 2000 0
C 2001 0
C 2002 0
C 2003 1
C 2004 1
C 2005 1

D 2000 0
D 2001 0
D 2002 0
D 2003 0
D 2004 0
D 2005 1


二维码

扫码加我 拉你入群

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

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

全部回复
2018-8-2 09:55:16
求大神指导啊~~~
二维码

扫码加我 拉你入群

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

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

2018-8-2 23:01:08
可以使用笛卡尔积。

不过转换后的第三列是什么,看不明白
二维码

扫码加我 拉你入群

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

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

2018-8-3 09:16:30
whymath 发表于 2018-8-2 23:01
可以使用笛卡尔积。

不过转换后的第三列是什么,看不明白
第三行是例如原数据是A 2003, 那么A 2000 A 2001 A 2002 就是0,然后2003, 2004, 2005 就是1
二维码

扫码加我 拉你入群

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

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

2018-8-3 09:16:32
whymath 发表于 2018-8-2 23:01
可以使用笛卡尔积。

不过转换后的第三列是什么,看不明白
第三行是例如原数据是A 2003, 那么A 2000 A 2001 A 2002 就是0,然后2003, 2004, 2005 就是1
二维码

扫码加我 拉你入群

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

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

2018-8-4 22:44:01
claudiehuang 发表于 2018-8-3 09:16
第三行是例如原数据是A 2003, 那么A 2000 A 2001 A 2002 就是0,然后2003, 2004, 2005 就是1


那么就这样做好了:
/*1. 原始数据集*/
data Raw;
        Length Group $1.;
        input Group $ Year;
        cards;
        A 2000
        B 2001
        C 2003
        D 2005
        ;
run;


/*2. 扩充数据集*/
data Denom;
        do i = 65 to 68;
                Group = byte(i);
                do j = 2000 to 2005;
                        Year = j;
                        output;
                end;
        end;
        drop i j;
run;


/*3. 合并与计算*/
data Compute;
        merge Denom Raw(rename=(Year=Year_Raw));
        by Group;

        if Year >= Year_Raw then Flag = 1;
        else Flag = 0;
run;

看看是不是这回事
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群