楼主: 一眼瞬间
4417 21

还是不行,请高手指点,请直接看五楼,谢谢了!!! [推广有奖]

  • 0关注
  • 1粉丝

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
730 个
通用积分
0.0001
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
903 点
帖子
376
精华
0
在线时间
309 小时
注册时间
2010-3-14
最后登录
2023-8-19

楼主
一眼瞬间 发表于 2010-8-12 08:00:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
先合并了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;
二维码

扫码加我 拉你入群

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

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

关键词:高手指点 observation Governance observat Variable 匪夷所思

沙发
jinling101 发表于 2010-8-12 08:33:10
貌似没懂!
精灵

藤椅
hopewell 发表于 2010-8-12 08:49:19
table b里有重复观测吗?
  1. proc sql;
  2.         select company,fyear,count(*) as count
  3.                 from b
  4.                 group by company,fyear
  5.                 having count>1;
  6. quit;
复制代码

板凳
一眼瞬间 发表于 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 的运行,
发现样本少了好多。

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

地板
jingju11 发表于 2010-8-12 20:44:07
5# 一眼瞬间

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

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

7
soporaeternus 发表于 2010-8-12 21:41:30
a d作了nodupkey
为什么最后是c和d做join
还有那个c and d的and是不是对?我觉得好像是inner join吧

数据究竟是什么样子.......
Let them be hard, but never unjust

8
hopewell 发表于 2010-8-12 21:56:18
  1. proc sql;
  2.      create table e as
  3.          select *
  4.          from  c and d
  5.      where c.cik=d.cik and c.datadate=d.datadate;
  6. quit;
复制代码
这SQL报错没?  inner join不能写c and d吧,笔误?

9
一眼瞬间 发表于 2010-8-13 00:27:33
不好意思,我真的是一堆笔误,造成大家误解。已经改过来了。

之前码字的时候真是头晕了。。。。

10
lyceum 发表于 2010-8-13 00:28:38
不是用merge 而是用SAS 的update 功能

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 04:30