楼主: dxystata
1578 10

[问答] 根据aaa1和aaa2数据集如何得到这样的数据集 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2023-5-22 22:46:46 |AI写论文
10论坛币
  1. data aaa1;
  2. input x;
  3. cards;
  4. 2
  5. 3
  6. 4
  7. ;
  8. run;

  9. data aaa2;
  10. input _x;
  11. cards;
  12. 1
  13. ;
  14. run;
复制代码
根据aaa1和aaa2数据集如何得到这样的数据集:
x _x
2  1
3  1
4  1

谢谢!

最佳答案

whymath 查看完整内容

在 DATA 步中,仅有通过 INPUT 语句读取的新变量,或通过赋值语句新衍生的变量,会在隐性循环中被初始化为缺失值, 通过 SET、MERGE、UPDATE、MODIFY 语句读取的变量都不会被初始化。因此,相比两年前的答案,我们可以进一步地省去 RETAIN 语句。
关键词:数据集 cards Input card Data
已有 1 人评分经验 收起 理由
xujingtang + 80 精彩帖子

总评分: 经验 + 80   查看全部评分

沙发
whymath 发表于 2023-5-22 22:46:47
  1. data want;
  2.   set aaa1;
  3.   if _n_=1 then set aaa2;
  4. run;
复制代码
在 DATA 步中,仅有通过 INPUT 语句读取的新变量,或通过赋值语句新衍生的变量,会在隐性循环中被初始化为缺失值, 通过 SET、MERGE、UPDATE、MODIFY 语句读取的变量都不会被初始化。因此,相比两年前的答案,我们可以进一步地省去 RETAIN 语句。
已有 1 人评分经验 学术水平 热心指数 收起 理由
dxystata + 100 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  学术水平 + 1  热心指数 + 1   查看全部评分

藤椅
hugebear 发表于 2023-5-23 05:36:37
  1. data aaa1_by;
  2.       set aaa1;
  3.       key = 1;
  4. run;

  5. data aaa2_by;
  6.       set aaa2;
  7.       key = 1;
  8. run;

  9. data out;
  10.       merge aaa1_by aaa2_by;
  11.       by key;
  12.       drop key;
  13. run;
复制代码


已有 1 人评分经验 热心指数 收起 理由
dxystata + 100 + 1 热心帮助其他会员

总评分: 经验 + 100  热心指数 + 1   查看全部评分

板凳
橙红的果士 学生认证  发表于 2023-5-23 08:49:06
  1. data aaa1;
  2. input x;
  3. cards;
  4. 2
  5. 3
  6. 4
  7. ;
  8. run;

  9. data aaa2;
  10. input _x;
  11. cards;
  12. 1
  13. ;
  14. run;
  15. proc sql;
  16.         create table want as
  17.         select a.*, b.*
  18.         from aaa1 as a
  19.         left join aaa2 as b on 1=1
  20. ;
  21. quit;
复制代码


已有 1 人评分经验 热心指数 收起 理由
dxystata + 100 + 1 热心帮助其他会员

总评分: 经验 + 100  热心指数 + 1   查看全部评分

报纸
hugebear 发表于 2023-5-24 02:00:30
如果可以用proc sql, 那么代码可以更简单一点(目标输出是aaa1和aaa2的Cartesian product):
  1. proc sql;
  2.     create table out as
  3.         select aaa1.*, aaa2.*
  4.         from aaa1, aaa2
  5.     ;
  6. quit;
复制代码


已有 1 人评分经验 热心指数 收起 理由
dxystata + 100 + 1 热心帮助其他会员

总评分: 经验 + 100  热心指数 + 1   查看全部评分

地板
whymath 发表于 2023-5-25 10:53:30
已有 1 人评分经验 热心指数 收起 理由
dxystata + 100 + 1 热心帮助其他会员

总评分: 经验 + 100  热心指数 + 1   查看全部评分

7
dxystata 发表于 2023-5-25 11:25:46
whymath 发表于 2023-5-25 10:53
你在两年前问过这个问题:https://bbs.pinggu.org/forum.php?mod=viewthread&tid=10526341
我记得data步应该有好方法,记不清啦,论坛无法检索我在SAS版块发的所有主题帖。

8
dxystata 发表于 2023-5-25 12:38:51
whymath 发表于 2023-5-25 11:17
data want;
  set aaa1;
  if _n_=1 then set aaa2;
run;

在 DATA 步中,仅有通过 INPUT 语句读取的新变量,或通过赋值语句新衍生的变量,会在隐性循环中被初始化为缺失值, 通过 SET、MERGE、UPDATE、MODIFY 语句读取的变量都不会被初始化。因此,相比两年前的答案,我们可以进一步地省去 RETAIN 语句。
能否解释下data步运行机制,谢谢!

9
hugebear 发表于 2023-5-25 22:32:39
dxystata 发表于 2023-5-25 12:38
能否解释下data步运行机制,谢谢!
http://documentation.sas.com/doc ... 7n14h8x7y7u34y4.htm
已有 1 人评分经验 热心指数 收起 理由
dxystata + 100 + 1 热心帮助其他会员

总评分: 经验 + 100  热心指数 + 1   查看全部评分

10
橙红的果士 学生认证  发表于 2023-5-26 08:50:03
whymath 发表于 2023-5-25 10:53
你在两年前问过这个问题:https://bbs.pinggu.org/forum.php?mod=viewthread&tid=10526341
记性还是非常好的

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

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