全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4238 12
2010-08-11
只是删除重复的好操作,但是不知怎么删除半重复的?

就是对于同一个公司,原先有一行的观测。
但是后来发现原先的观测不对,就在下面重新列了更正过的观测。有一列变量叫“更正次数”,比如说更正过两次,那么最后被更正过的那个观测,对应这个变量的值为“2”,前面两个观测更正次数这个变量对应的值分别为0, 和1.

如果只要留下最后一次的,而删除前面的,怎么编程呢?


不知道有没比较好的方法? 主要是不同的公司更正次数不一样,有的被更正过一次,有的被更正过两次,还有3次的。只要留下最新的那一次。

数据形状举例:

company        times of correction    other variables
a                         0                             25
a                        1                             23
a                         2                             24
b                         0                             23
c                         0                             66
c                         1                             98
d                         0                             11
e                         0                             12

上面的数据可以看到a被更正了2次,需要删除前两次
c被更正了1次,需要删除前面的一次。

需要批量进行这种处理,大家有好的方法不?

先谢过了!!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-8-11 08:56:55
对应的还有file date,所以如果是留下这个公司file date 最新的一行数据应该也行。
二维码

扫码加我 拉你入群

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

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

2010-8-11 09:05:35
company+time of correction sort一下
last.company输出应该就可以了吧
二维码

扫码加我 拉你入群

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

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

2010-8-11 09:07:54
表设计不满足BNF,有数据冗余啊:)
SQL可以这样:
select company, max(times_of_correction), other_var from Table
或者
select company, max(fiel_date), other_var from Table
大致如此,用max函数挑出最大的
二维码

扫码加我 拉你入群

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

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

2010-8-11 09:23:57
sql做的话
max取出最大以后还要再连回去取出对应的字段

单就这个操作而言,data步比较简单
二维码

扫码加我 拉你入群

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

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

2010-8-11 10:10:54
sort的时候还是出问题了,是公司几年的数据,

sort完,时间就乱了。就是有列是代表公司该观测属于第几年,有一列是correction的时间。
如果只是按照两个sort
就是
proc sort XXX;
by company correction_date;
这样出来结果观测的时间就乱了,本来是按照时间序列来的,比如说2000年的所有公司排完了,接着排2002年的。(因为很多公司每年都会再出现)

这样一来,last语句也没效果了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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