全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1262 4
2013-01-31
在数据处理中,很多时候都需要把一个只有一行数据的data merge到一个n行obs的data中去,然后进一步做计算处理,例如:

data one;
  input x y z;
  cards;
  1 2 3
  3 3 4
  ...
;
假设data one有上万行数据,其中会有extreme value,现在想分别算出x y z的1% 和99% quantile 以作为critical value进行删除或者truncate处理。计算quantile不难,可以用proc univariate。但是在进行删除或truncate的时候需要在一个data set里进行,这就需要把这一行的data set与之前上万行的data set merge起来。假设 data two 是含 1%和99% critical value的data set。 用下面这个小技巧即可:

data three;
if _N_=1 then set two;
  set one;
run;

merge成功!当然,除此之外还有很多种1 to n的 merge 方法,个人认为这个很简单。




  
二维码

扫码加我 拉你入群

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

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

全部回复
2013-1-31 14:11:46
That is a interesting topic.
二维码

扫码加我 拉你入群

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

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

2013-1-31 15:39:28
在进行删除或truncate的时候需要在一个data set里进行,这就需要把这一行的data set与之前上万行的data set merge起来.

生成各宏比较好吧 如果真是成千上万的话
二维码

扫码加我 拉你入群

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

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

2013-1-31 22:05:57
chenys625 发表于 2013-1-31 15:39
在进行删除或truncate的时候需要在一个data set里进行,这就需要把这一行的data set与之前上万行的data set ...
但是truncate也是根据data的分布情况而进行的,有的data分布很好,没有明显outlier,就不需要truncate,不过也可以自己定义条件再编macro。
二维码

扫码加我 拉你入群

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

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

2013-2-1 09:47:07
ygyxzjz 发表于 2013-1-31 22:05
但是truncate也是根据data的分布情况而进行的,有的data分布很好,没有明显outlier,就不需要truncate,不 ...
把quantile付成宏,不就不用合并了么
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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