楼主: wanwanle2
3238 6

[问答] merge数据集,遇到了空数据集 [推广有奖]

  • 1关注
  • 22粉丝

已卖:153份资源

博士生

87%

还不是VIP/贵宾

-

威望
0
论坛币
310 个
通用积分
294.0629
学术水平
16 点
热心指数
18 点
信用等级
14 点
经验
287100 点
帖子
306
精华
0
在线时间
370 小时
注册时间
2011-4-13
最后登录
2024-10-23

楼主
wanwanle2 在职认证  发表于 2018-1-4 10:36:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
需要merge四十多个数据集,数据集比较规范,Y1,Y2---Y50.,其中 2,4,6,10是空的数据集。如果来跳过这些空的数据集来横向合并。data y;
merge y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11;
by date;
run;


1326  data y;
1327  merge y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11;
1328  by date;
1329  run;

ERROR: BY 变量 date 不在输入数据集 WORK.Y2 中。
ERROR: BY 变量 date 不在输入数据集 WORK.Y4 中。
ERROR: BY 变量 date 不在输入数据集 WORK.Y6 中。
ERROR: BY 变量 date 不在输入数据集 WORK.Y10 中。
NOTE: 由于出错,SAS 系统停止处理该步。
WARNING: 数据集 WORK.Y 可能不完整。该步停止时,共有 0 个观测和 29 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒



二维码

扫码加我 拉你入群

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

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

关键词:Merge 数据集 warning Error date

沙发
l1i2n3i4n5g 在职认证  发表于 2018-1-4 14:30:37
data want;
   merge y:;
   by date;
run;

藤椅
wanwanle2 在职认证  发表于 2018-1-4 14:40:40
还是会出错。无法解决空的数据集
1941  data y;
1942  merge y:;
1943  by date;
1944  run;

ERROR: BY 变量 date 不在输入数据集 WORK.Y10 中。
ERROR: BY 变量 date 不在输入数据集 WORK.Y2 中。
ERROR: BY 变量 date 不在输入数据集 WORK.Y4 中。
ERROR: BY 变量 date 不在输入数据集 WORK.Y6 中。
NOTE: 由于出错,SAS 系统停止处理该步。
WARNING: 数据集 WORK.Y 可能不完整。该步停止时,共有 0 个观测和 29 个变量。
WARNING: 数据集 WORK.Y 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒

板凳
l1i2n3i4n5g 在职认证  发表于 2018-1-4 15:01:44
或者用其他方法合并,或者想办法把空数据集删除

报纸
fengjuven 发表于 2018-1-4 22:00:20
%macro merge();
%do i = 1 %to 50;
data y&i.;
set y&i.;
if date = . then date = .;
run;
%end;
data y;
merge
%do j = 1 %to 50;
y&j.
%end;;
by date;
run;
%mend merge;
%merge();
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
wanwanle2 + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

地板
流水不朽 发表于 2018-1-5 09:33:11
proc contents data=work._all_ out=tmp_all(keep=memname nobs where=(nobs^=0)) noprint;run;

proc sql noprint;
        select distinct strip(memname) into : tbl_all separated by ' '
          from tmp_all
         where memname like 'Y%';
quit;

%put &tbl_all.;

data        Y;
  merge &tbl_all.;
     by date;
run;
已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
0bama + 1 精彩帖子
lovexialulu + 1 + 1 + 1 + 1 观点有启发
wanwanle2 + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 6  学术水平 + 2  热心指数 + 3  信用等级 + 2   查看全部评分

7
舍身卫道 发表于 2018-1-10 09:17:34
流水不朽 发表于 2018-1-5 09:33
proc contents data=work._all_ out=tmp_all(keep=memname nobs where=(nobs^=0)) noprint;run;

proc sq ...
楼上正解,学习了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-21 14:29