全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2489 3
2015-05-02
id date num
1 2008 -1
1 2009 -3
1 2010 3
1 2013 1
1 2014 -5
8 2007 -7
8 2008 -3
8 2009 1
8 2010 3
12 2009 4
12 2010 -8
12 2011 2
13 2009 1
13 2014 8
请问一下,想新生成一列数据num1,以ID1为例,2009年的,算2009,2008,2007(即前三年)为负的年份占总年份的比例,比如id1,2009年的num1为-1/3,id2,2010年为-2/3,每个id年份都要算,求帮助
二维码

扫码加我 拉你入群

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

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

全部回复
2015-5-2 17:19:07
你看是这个意思吗?(以SQL为例):

SELECT a.id
        ,c.date
        ,(CASE WHEN a.num<0 THEN 1 ELSE 0 END + CASE WHEN b.num<0 THEN 1 ELSE 0 END + CASE WHEN c.num<0 THEN 1 ELSE 0 END) / 3 AS num1
FROM TABLE AS a
        JOIN TABLE AS b
                ON b.date = a.date + 1
                AND b.id = a.id
        JOIN TABLE AS c
                ON c.date = b.date +1
                AND c.id = b.id;
二维码

扫码加我 拉你入群

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

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

2015-5-2 17:23:39
如果你的数据中有些年份是缺失的话要改成LEFT JOIN
二维码

扫码加我 拉你入群

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

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

2015-5-2 18:33:30
jinbong1986 发表于 2015-5-2 17:23
如果你的数据中有些年份是缺失的话要改成LEFT JOIN
谢谢,一会看看
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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