楼主: qikuiming
2784 4

[实际应用] 求助:SAS中,如何用1个数据集填补另外一个数据集的缺失值 [推广有奖]

  • 0关注
  • 1粉丝

大专生

76%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
387 点
帖子
31
精华
0
在线时间
64 小时
注册时间
2015-6-21
最后登录
2020-2-18

50论坛币


SAS操作求助:


求助各位大神,我有两个数据集,如图
IMG_20180306_190952.jpg

t1是主数据集,t2是其他数据集,变量都相同,但观测值不同,t1是3行,t2是4行。
我需要把t1数据填补更新,目前t1缺失3个值(如红色圆圈),而t2里面有其中一个,我应该如何写命令才能把t2的这一个值填到t1里,但不要第t2的第四行及其他数据呢?
也就是,完全不动t1,仅仅是把t1缺失的而t2又有的数据填进去。
其中,t2的数据也不全,仅仅是有些值是t2有但t1确实的,但t1和t2变量完全相同,如A,但t1的A和t2的A数量不一样,有50%重复,另50%却不一样。看了一晚上也没想出来怎么写,求大神指点,50币悬赏
当然,主数据集有1个,但其他数据集有十几个,每个数据集有1万多个指标,图仅仅是示例,求指点。






IMG_20180306_190952.jpg (376.77 KB)

IMG_20180306_190952.jpg

关键词:数据集 缺失值 如何用 观测值 如何写 SAS
不求分,只作思路讨论
1. 从主数据集遍历,取有空白列的行,并遍历每个外部数据集
2. 子数据集当前行至少两列的数据与主数据集当前行中对应列相同,主数据集当前行的空白列赋值为子数据集当前行对应列数据
补充
算法可以优化(当然也有可能时你的图示中明显存在数学关系的关系)
如果来自数据库,那么 SQL 部分肯定可以优化,以减少遍历的次数
已有 1 人评分论坛币 热心指数 收起 理由
admin_kefu + 10 + 2 热心帮助其他会员

总评分: 论坛币 + 10  热心指数 + 2   查看全部评分

使用道具

藤椅
qikuiming 发表于 2018-3-7 10:56:10 |只看作者 |坛友微信交流群
爱思考大帝 发表于 2018-3-6 22:17
不求分,只作思路讨论
1. 从主数据集遍历,取有空白列的行,并遍历每个外部数据集
2. 子数据集当前行至少 ...
已在另一个问题中完美解决了
https://bbs.pinggu.org/thread-6260474-1-1.html

使用道具

板凳
8112mmw 发表于 2018-3-9 08:36:54 |只看作者 |坛友微信交流群
做一次搬运工!
data t1;
   input (A B C D) ($);
cards;
a1 b1 c1 d1
a2 b2 . d2
a3 b3 c3 .
;
run;

data t2;
   input (A B C D) ($);
cards;
a1 b1 c1 .
a2 b2 c2 d2
a3 b3 c3 .
a4 b4 . d4
;
run;

proc sort data=t1;
   by A B;
run;

proc sort data=t2;
   by A B;
run;

data t3;
   update t1(in=in_t1) t2;
   by A B;
   if in_t1=1;
run;
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

使用道具

报纸
qikuiming 发表于 2018-3-10 14:39:55 |只看作者 |坛友微信交流群
8112mmw 发表于 2018-3-9 08:36
做一次搬运工!
data t1;
   input (A B C D) ($);
哥,那个问题也是我问的,哈哈

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 06:15