㈠ SAS 数据导入问题
数据的导入导出常见的需求,在我个人的成长过程中,只就SAS base、 SAS EM这两个说一下。
base导入:
(1) SAS表导入: data outname; set database; run;
(2) 外部数据: proc import out= datafile="" dbms=excel replace; run;(replace不是必须)
(base导入数据中包含非法字符等,可扩展一下SAS默认的命名规则。 方法是:options validvarname=any;)
EM导入:
(1) SAS表导入:文件-新建-逻辑库,为数据集创建一个逻辑库;(2)数据源(鼠标右击)-创建数据源,根据SAS弹出的对话框一步步进行。注:EM只能是SAS表,因此,其他来源的数据需先转化成SAS格式,在转化格式时,我遇到一个问题是excel表中,字段名为中文字符、中文空格、非法字符时,导出的表格是无法正确导入的。编码字符通常情况下是英文、数字和_ 。
SAS默认的是V7。其规则是:·最长32字符;·首字符可以拉丁字母和下划线,后继的字符可是字母和下划线,还有数字符号;·末尾空格忽略,且左对齐;·中间不能包含空格和特殊字符(下划线除外);·字符大小写均可,不作区分;·不能为SAS自动变量,如_N_、_ERROR_等;
(2) 外部数据导入:抽样-外部文件-导入文件
㈡ sas统计很多数据集名要一个一个打进去吗
我觉得可以分为两种情况。
1、数据集名称是有顺序的,比如a001、a002、a003这样的,如此可以使用宏结合%do 语句进行操作,批量读取。
2、数据集名称没有规律,那么一种办法就是分别打进去。另外一种比较复杂的就是建立一个数据集名称数据集,每一行存储一个数据集名称,对该数据读取从而获得需要导入的数据集名称。
㈢ 怎样在sas数据集中选取某些数据行形成新的数据集
if _N_=1 then output;
用这样的语句将第一行输出进另外一个数据集。
也可以用如下语句实现将多行输入进另外数据集(这里是第一、第二、第四行的意思)
if _N_ in (1,2,4) then output;
㈣ SAS中数据的导入(1)
[TOC]
SAS中数据导入可以有四种类别
建立SAS数据集的的5种方法
以导入CSV文件为例
若文件为原始文件(例如文本文件),SAS也可以很方便的读取。
这种数据类型在第三小节提到了,也就是原始数据文件中的所有值之间都至少有一个空格分隔,合适的方法是使用列表输入(自由格式输入)。
列表输入的局限性。必须读取全部数据,不能跳过不需要的值;任何缺失都必须用句点标识;字符型数据长度默认不能超过8个字符且不能有内嵌空格;不太适合读取日期格式数据。
数据的值或者缺失值的句点之间没有空格(或者其他分隔符),则无法使用列表输入来读取数据。但是,如果每个变量值都能在数据行的相同位置找到,就可以用列输入来读取。这些数据应是标准数值数据(数字、小数点、正负号、科学计数法),带有内嵌逗号(100,000)和日期格式的数值不是标准数值类型。
列输入对比列表输入的优势:值之间无须空格;缺失值可以留空;字符型数据可以内嵌空格;可以跳过不需要的变量。
在第4节中提到,用列表或列输入时非标准字符不能正确识别,如日期,内嵌逗号的数字等。
输入格式的三种基本类型:字符、数值和日期。
注 意 :
参考文献
The little SAS Book, Fifth Edition.
㈤ sas导入excel数据的教程
在 Excel 中录入好数据以后经常需要把整个数据给导入到sas中,具体该怎么导入excel数据呢?下面是由我分享的sas导入excel数据的教程,以供大家阅读和学习。
sas导入excel数据的教程:
sas导入excel数据步骤1:启动SAS,关闭想要导入数据的excel文件
sas导入excel数据步骤2:输入以下代码:
sas导入excel数据步骤3:*通过 import 过程读取外部excel文件建立数据集;libname paper1 'e:paper';proc import out=paper1.paper1 /*输出的数据集名*/ datafile="E:paperyongpaperdata.xlsx";/*要导入的excel文件的完整路径和数据名,要写清楚扩展名*/ sheet="sheet2";/*指出电子表格中的那一个表单,就是表单名字*/ getnames=yes;/*指出第一行是否有字段名*/ run;
sas导入excel数据步骤4:点sas右上方 奔跑的小人图案运行
sas导入excel数据步骤5:得到结果如图,数据导入成功
㈥ SAS 中怎么把一个数据集中的某个变量添加到另一个数据集中
如果40多个变量只需要添几个到另一数据集,用KEEP
STATEMENT
保留你要的变量1
变量2:
data
work.datatemp
(KEEP
=
variable1
variable2);
SET
sas.datastored;
run;
如果40多个变量要添大多数的变量名到另一数据集,用DROP
STATEMENT
舍掉你不要的变量3
变量4:
data
work.datatemp
(DROP
=
variable3
variable4);
SET
sas.datastored;
run;
㈦ sas程序如何导入dat数据集 在命令行,我输入file:'d:\45data.dat',提示不能识别file命令,怎么办啊
导入的是什么?
如果是SAS数据集就直接复制到关联文件夹
如果是EXECEL则点菜单
㈧ 关于SAS: 如何用一个proc步同时处理多个数据集
把proc步放在一个宏中,设置一个宏参数为数据集名,然后多次调用该宏
㈨ 求解关于sas 多个数据集合并的问题 目前大概有10多个数据集,其中均包含一个相同的字段a,现在想
dataall;
mergedata1(in=a1)data2(in=a2)data3(in=a3)...data10(in=a10);
bya;
ifa1anda2anda3and..anda10;
run;
㈩ SAS编程:如何批量读入某路径下外部文档数据
SAS日志文件的Issue检查涉及多个日志文件的导入,导入的过程分为2个部分。 第一部分,获取特定路径下所有日志文件的名称(即文件地址);第二部分,获取文件地址后将文件导入SAS数据集 。
这两部分功能的实现,之前都有过介绍:
这篇文章将这两部分的内容整合到一起,演示路径如下:
程序思路是,使用 Dopen 函数打开特定路径,通过 Dnum 函数获取路径内的文件数目,基于此使用Do循环以及 Dread 函数进行读取文件名称,路径名称与文件名拼接可以获得文件路径。最后,对数据集进行筛选,只保留.LOG文件。
程序运行结果如下:
前面文章介绍了2种导入方法,推荐使用 infile 语句。我手动将保存导入内容的长度设置为1000,这个值已经是比较大了。但是对于一些Log Issue,会将所有变量取值输出到日志中,这时候很容易造成内容截断。
不过,从检查Issue的角度看,可以在导入时筛选特定记录进行输出,截断不影响检查的判断结果。当然,也可以设置SAS读入文档的记录的最大长度32767,这大概率会避免内容的截断。
结果如下:
批量读入外部文档,是单个文档读入的延伸。文档读入SAS数据集,方便后续的检查处理。
感谢阅读, 欢迎关注!
若有疑问,欢迎评论交流!