全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4325 21
2010-08-12
先合并了A和B两个table,得到tableC。

有一个variable a(就是一列变量)是只有tableA里面有的,B里面没有,这样的话,如果我对C用一个if var a=. then delete的命令的话,那么新的C的observation个数应该和原来A的个数一样吧?

但是事实上是新C的observation个数小于旧C的,大于A的。。。。


无语了,我刚刚还画了半天韦氏图。。。

这个是我为了简化观察,自己举了个例子(实际数据库比较大型),这个得到的结果是对的。最后dd的观测值就是5个。但是我那个大型数据的观察值结果就是如上所述了。。。
Table A
company    fyear  profit     governance
A                 2001    111             1
A                 2002    113             0
B                 2001    222             0
B                 2002     223            0
C                2001     221             1

Table B
company    fyear  happy
A                 2001    111
A                 2002    113
C                2001    222
C               2002     223
D                2001     221

data a;
input company $ fyear  profit     governance;
cards;
A                 2001    111             1
A                 2002    113             0
B                 2001    222             0
B                 2002    223            0
C                2001     221             1
;
run;

data b;
input company $ fyear  happy;
cards;
A                 2001    111
A                 2002    113
C                2001    222
C               2002     223
D                2001     221
;
run;

proc sort data=a out=aa;
by company fyear;
run;

proc sort data=b out=bb;
by company fyear;
run;

data cc;
merge aa bb;
by company fyear;
run;

data dd;
    set cc;
    if governance=. then delete;
run;
二维码

扫码加我 拉你入群

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

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

全部回复
2010-8-12 08:33:10
貌似没懂!
二维码

扫码加我 拉你入群

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

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

2010-8-12 08:49:19
table b里有重复观测吗?
复制代码
二维码

扫码加我 拉你入群

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

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

2010-8-12 09:07:27
3# hopewell

LS的真是一语中的啊!!!!!我刚网上查了半天,对我的数据稍微实验了下,好像就是被merge的两个table 没有处理干净!!!
我再研究研究看看,怎么处理重复数据。好像几个处理重复数据的方法又不一样。(nodupkey 和nodup几个key又不一样?)
二维码

扫码加我 拉你入群

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

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

2010-8-12 17:56:53
还是不行,我已经把两个表格都弄得 nodupkey了,再用proc sql,

a和 b是两张不同的数据表,交集不为0,并集不为其中一个,a和b中有cik 和datadate两个相同的variable名称。其他的variable是不同的。
数据长的就像这个样子
data a;
input cik $ datadate  profit     governance;
cards;
A                 2001    111             1
A                 2002    113             0
B                 2001    222             0
B                 2002    223            0
C                2001     221             1
;
run;

data b;
input cik $  datadate  happy;
cards;
A                 2001    111
A                 2002    113
C                2001    222
C               2002     223
D                2001     221
;
run;

这是我的步骤
proc sort data=a  nodupkey;
     by CIK DATADATE;
run;
proc sort data=b nodupkey;
    by CIK datadate;
run;

这样操作的结果应该是a里面没有cik 和datadate同时重复的吧?b里面也没有

然后我再
proc sql;
     create table e as
         select *
         from  a , b
     where a.cik=b.cik and a.datadate=b.datadate;
quit;
run;

这样出来的table e的样本个数,是不是应该是等于a b两个table的交集(因为cik 和datadate要关联,而且两个table里面都有)

但是我一出来样本的个数比a原来的样本个数 多很多。。。
奇怪了,

然后我再对e做nodupkey 的运行,
发现样本少了好多。

恳请高手指点!!!!我搞了一天了。。。哎 痛苦啊
二维码

扫码加我 拉你入群

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

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

2010-8-12 20:44:07
5# 一眼瞬间

...是不是应该是等于c d两个table的交集....
什么叫交集?
{A, A} 交{A} = {A} ? {A A}?

我感觉你应该多多了解一下你的数据具体长的什么样子。我个人的经验是,
很多的困惑往往来源于对数据结构认识不甚清楚。通常来讲,sas的merge还有sql的运行,还是按照套路来的,不会瞎联系的
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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