楼主: dxystata
4321 11

SAS读入Excel数据后拼接数据集 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

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

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

楼主
dxystata 发表于 2014-10-29 13:57:23 |AI写论文
50论坛币
  1. PROC IMPORT OUT= WORK.a
  2.             DATAFILE= "F:\Book1.xls"
  3.             DBMS=EXCEL REPLACE;
  4.      RANGE="Sheet1$";
  5.      GETNAMES=YES;
  6.      MIXED=YES;
  7.      SCANTEXT=YES;
  8.      USEDATE=YES;
  9.      SCANTIME=YES;
  10. RUN;


  11. PROC IMPORT OUT= WORK.b
  12.             DATAFILE= "F:\Book1.xls"
  13.             DBMS=EXCEL REPLACE;
  14.      RANGE="Sheet2$";
  15.      GETNAMES=YES;
  16.      MIXED=YES;
  17.      SCANTEXT=YES;
  18.      USEDATE=YES;
  19.      SCANTIME=YES;
  20. RUN;
复制代码


  1. data c;
  2.         set a b;
  3. run;
复制代码
2014-10-29_135005.jpg

  1. data d;
  2.         retain no x;
  3.         length x $100.;
  4.         set a b;
  5. run;
复制代码


2014-10-29_134920.jpg

length语句指定长度后,还是出现了数据截断。如何解决?谢谢!

Book1.xls (13.5 KB)

关键词:excel数据 EXCEL xcel exce cel Excel 拼接

沙发
sniperhgy 发表于 2014-10-29 14:46:00
楼主你好,刚才下载了附件,试验了一下,请试试如下代码:
  1. data c;
  2.   retain no x;
  3.   format x $100.;
  4.   set a b;
  5. run;
复制代码
关于那个import,我觉得没有必要写那么多附加的选项,只需要
  1. PROC IMPORT
  2.   OUT = WORK.a
  3.   DATAFILE = "d:\Book1.xls"
  4.   DBMS = EXCELCS REPLACE;
  5.   Sheet = "Sheet1";
  6. RUN;
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 根据规定进行奖励

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

藤椅
pobel 在职认证  发表于 2014-10-29 15:09:49
“length语句指定长度后,还是出现了数据截断。”

数据是没有截断的,只是那个"$20."的format使变量只能显示前20个。

楼主试一下把length语句改成 format x $100.;
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 10 根据规定进行奖励
sniperhgy + 1 + 1 + 1 精辟的解释。

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

板凳
knight48 发表于 2014-10-29 15:10:04
把 set a b; 改为set b a;就应该好了。

报纸
sniperhgy 发表于 2014-10-29 15:31:12
knight48 发表于 2014-10-29 15:10
把 set a b; 改为set b a;就应该好了。
这个……,有点取巧的感觉,要是有很多数据集的话,还得先判断谁的x最长……。

地板
knight48 发表于 2014-10-29 15:50:36
sniperhgy 发表于 2014-10-29 15:31
这个……,有点取巧的感觉,要是有很多数据集的话,还得先判断谁的x最长……。
你可以先把数据集a,b中的变量设置一个足够长的长度就可以了。关键不是取巧。

7
knight48 发表于 2014-10-29 15:50:59
sniperhgy 发表于 2014-10-29 15:31
这个……,有点取巧的感觉,要是有很多数据集的话,还得先判断谁的x最长……。
你可以先把数据集a,b中的变量设置一个足够长的长度就可以了。关键不是取巧。

8
sniperhgy 发表于 2014-10-29 16:29:33
knight48 发表于 2014-10-29 15:50
你可以先把数据集a,b中的变量设置一个足够长的长度就可以了。关键不是取巧。
嗯,这位坛友的观点我很赞同,需要将a和b中的x设置一个足够的长度。
但是这里有一个前提,a和b都是由SAS读取excel得到的,而SAS读取的时候,将根据文件中,相应列里面的最大长度为其规定format,难道我因为需要一个很长的长度,就把比如a里面的x写成“bbbbb                           ” ? 这岂不是有点本末倒置了。

9
dxystata 发表于 2014-10-29 16:36:04
如何读入Excel文件,用length指定来解决呢?

10
sniperhgy 发表于 2014-10-29 16:50:25
dxystata 发表于 2014-10-29 16:36
如何读入Excel文件,用length指定来解决呢?
用proc import的方式是没有办法了,只能在写data部的时候,才可以指定。

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

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