
base导入:
(1) SAS表导入: data outnameset databaserun
(2) 外部数据: proc import out= datafile="" dbms=excel replacerun(replace不是必须)
(base导入数据中包含非法字符等,可扩展一下SAS默认的命名规则。 方法是:options validvarname=any)
EM导入:
(1) SAS表导入:文件-新建-逻辑库,为数据集创建一个逻辑库;(2)数据源(鼠标右击)-创建数据源,根据SASd出的对话框一步步进行。注:EM只能是SAS表,因此,其他来源的数据需先转化成SAS格式,在转化格式时,我遇到一个问题是excel表中,字段名为中文字符、中文空格、非法字符时,导出的表格是无法正确导入的。编码字符通常情况下是英文、数字和_ 。
SAS默认的是V7。其规则是:·最长32字符;·首字符可以拉丁字母和下划线,后继的字符可是字母和下划线,还有数字符号;·末尾空格忽略,且左对齐;·中间不能包含空格和特殊字符(下划线除外);·字符大小写均可,不作区分;·不能为SAS自动变量,如_N_、_ERROR_等;
(2) 外部数据导入:抽样-外部文件-导入文件
如果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
您可以使用_N_系统变量来为每一行数据添加一个序列号。以下是一个示例代码:bash
Copy code
data a
set a
seq = _N_
run
这将在数据集 a 中添加一个名为 seq 的新列,并为每行数据分配一个序列号。_N_系统变量代表数据集中的当前观察行号。
请注意,如果您希望在运行多个 data 步骤时保留观察行号,则必须使用 retain 语句。以下是一个带有 retain 语句的示例代码:
bash
Copy code
data a
retain seq 0
set a
seq + 1
run
此代码将在 a 中添加一个名为 seq 的新列,并为每行数据分配一个递增的序列号。在第一行,将使用 retain 语句将 seq 初始值设置为 0,并保留该值。在每一行,seq 将加 1,并将新值保留在下一行使用。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)