楼主: spy1889
21293 21

[原创博文] 多个数据集合并的问题 [推广有奖]

  • 5关注
  • 5粉丝

已卖:1份资源

教授

22%

还不是VIP/贵宾

-

威望
0
论坛币
1244 个
通用积分
45.7039
学术水平
41 点
热心指数
43 点
信用等级
23 点
经验
12251 点
帖子
292
精华
0
在线时间
1913 小时
注册时间
2005-5-6
最后登录
2025-12-19

楼主
spy1889 发表于 2012-9-20 17:32:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
比如,现在有多个sas数据集,名字分别是a00001,a00002,。。。a00200,数据集里的变量名都一样。我想合并两个数据集,可以用
data new;
set a00001 a00002;
run;
但是要是把上面200个数据集合并,除了把所有数据集的名字全写上去外,有没有什么其他简单的方法?
非常谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:数据集 sas数据集 Data 有没有 NEW

回帖推荐

Smallvane 发表于7楼  查看完整内容

数据集的合并分为两种情形:第一种是纵向合并,即把具有相同变量的数据集合并起来;另一种是横向合并,把记录数目相同的数据集合并起来。 1 纵向合并 纵向合并的方法很简单,就是使用SET 语句将几个数据集的内容复制到一个数据集中就可以了。 例1 上一次曾经把score 数据集按照性别拆分到两个数据集scorem 和scoref,这两数据集具有完全相同的变量所以满足纵向合并的要求现在重新将它们合并程序如下 data combine; set scor ...

本帖被以下文库推荐

沙发
applebobysps 发表于 2012-9-20 17:34:38
同问。。。

藤椅
lovelybetty1208 发表于 2012-9-20 17:38:13
我合并过20个左右的,跟lz的情况一样。 一个一个列上去的。希望有简单的方法。不知到是否可以用宏?请高手帮忙!
耶和华是我的牧者,我必不致缺乏。
他使我躺卧在青草地上,
领我在可安歇的水边。

板凳
张甄甄 发表于 2012-9-20 17:38:21
applebobysps 发表于 2012-9-20 17:34
同问。。。
同问+1

报纸
ziyenano 发表于 2012-9-20 17:40:42
都是这个形式的话;
data new;
set a00001-a0000200;
run;
已有 1 人评分学术水平 收起 理由
lizhewenbei + 1 精彩帖子

总评分: 学术水平 + 1   查看全部评分

地板
nomad5 发表于 2012-9-20 17:45:08
data new;
set a:;
run;
已有 3 人评分学术水平 热心指数 信用等级 收起 理由
jrmjw + 1 + 1 + 1 观点有启发
lizhewenbei + 1 精彩帖子
xiaogalayy + 1 + 1 + 1 热心帮助其他会员

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

7
Smallvane 发表于 2012-9-20 17:56:31
数据集的合并分为两种情形:第一种是纵向合并,即把具有相同变量的数据集合并起来;另一种是横向合并,把记录数目相同的数据集合并起来。

1 纵向合并
纵向合并的方法很简单,就是使用SET 语句将几个数据集的内容复制到一个数据集中就可以了。
例1 上一次曾经把score 数据集按照性别拆分到两个数据集scorem 和scoref,这两数据集具有完全相同的变量所以满足纵向合并的要求现在重新将它们合并程序如下
data combine;
set scorem scoref;
run;
proc print;
run;
2 横向合并
横向合并要求数据集必须具有相同的记录数目,一般是同一观测的不同变量横向合并使用MERGE语句


例2 可以把原有的记录所有学生成绩的score 数据集拆分为三个数据集。第一个数据集包括姓名性别数学成绩,第二个数据集包括语文成绩,第三个数据集只包括英语成绩,这样这三个数据集就完全符合横向合并的条件
先将数据集score 拆分开来
data scorea;
set sasuser.score;
keep name sex math;
run;
data scoreb;
set sasuser.score;
keep chinese;
run;
data scorec;
set sasuser.score;
keep english;
run;


已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 2 精彩帖子

总评分: 经验 + 3  论坛币 + 2   查看全部评分

8
nuomin 发表于 2012-9-20 17:57:22
将列名放到excel里一拉,要多少有多少。比较笨的方法,当然了 ,肯定会有软件提供的方法。

9
spy1889 发表于 2012-9-20 19:27:51
ziyenano 发表于 2012-9-20 17:40
都是这个形式的话;
data new;
set a00001-a0000200;
谢了!好像这个不行,运行出错

10
ziyenano 发表于 2012-9-20 19:31:17
spy1889 发表于 2012-9-20 19:27
谢了!好像这个不行,运行出错
写错了;
data new;
set a00001-a00200;
run;

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

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