SAS数据处理

#想取出表内第一列数据

proc sort data=case_1 out=case_11;
by name in_Date;
run;

data new_Case_1;
set case_11;
by name;
if first.name;
run;

#根据另一个数据集筛选

proc sort data=case_2;
by name;
run;
proc sort data=case_2_standard;
by name;run;

data new_Case_21;
merge case_2(in =a) case_2_standard(in=b);
by name;
if a and b;
run;

#修改数据集格式

compress(str,chars,modifiers)  chars=去除的部分,modifiers保留
substrn(str,start_pos,len)
round(x,unit)#小数位数
input(str,format)#字符型转化成数值型
put()#数值转化成数字
data case_3;
input study_time$ 18.;
cards;
23小时30分钟;
12小时5分钟;
run;

data new_Case_3;
set case_3;
h=copress(substr(study_time,1,2),'','kd');#只保留数字
m=compress(substr(study_time),'','kd');
new_Study_time=round(input(h,8.)+(input(m,8.))/60,0.1);
drop h m;
run;
proc print data=customer;
format zip z5.#设置五位数,不足的填充0
run;
#调整小数位数

proc print data=customer;
format value z5.2#设置五位数(包含小数点以及小数位数),不足的填充0
run;

#日期 character to numeric

data race_new;
set race(rename=(race_Date=old));
date=input(race_date,date9.);
drop old;
format race_Date mmddyy10.;
date

#数字转化成为文本,以此改变位数

data nc_id;
set nc_data;
area_C=put(areacode,3.);
county_c=put(count,z3.);
NC_tag=catx('_',statecode,county_c,area_c)#拼接
run;

查看库内所有的表

data records;
set sashelp.vtable;
where upcase(libname)='LA';
RUN;
DATA COLUMN;
SET SASHELP.VCOLUMN;
WHERE UPCASE(LIBNAME)='la'
DATA ORANGES;
INPUT VARIETY $ FLAVOR;
TOTAL=VARIETY;
LABLE TOTAL='总数';
cards;
navel 9 8 
teom 10 2;
proc sort data=orange;
by descending total;
run;
proc print data=orange;
var _numeric_;
title '对orange的品尝检验结果'
run;
libname mulu 'C:\';
DATA  S;
infile 'e:\sas\xxx.dat';
input a b c;#需要新生成变量,适用Dat文件内的数据
run;
proc print;
run;
DATA  S;
infile 'e:\sas\xxx.dat';
input a b c;#需要新生成变量,适用Dat文件内的数据
run;
proc print;
run;

比较运算符
=(EQ) …,^=(NE),>(gt) <(LT) >=(GE) <=(LE) IN
逻辑运算符&(AND) |(!)(or) (~)(not)

其它:><(最小值) <>(最大值)

data a;
if a>:‘S’#加了冒号,表示只比较首字母

scan(s2,n)#查找s2内第二个
c1=index(x6,x7)#x6找有x7位置
c2=substr(x6,3,3)
weekday(date)
内部数据

data flow;
input x y ;
z=x+y;
put x= y= z=;
put _n_= _error_= ;#_n_表示data步已经执行的次数
cards;
10 20
100 200
1000 2000;
run;

data new3(lable='s s ss');
set flow;
run;

#data _null_不产生实际的数据集,只暂时把内容存储于内存,以供put语句等读取结果,可以节省内存;
data _last_ 以最近产生的数据集命名并取代其内容

input(g1-g5)(3*7.2,2*5.2)#g1-g3都是7位数,两个小数点,g4-g5是五位数
input(a b)($5.)都是字符串并且占五位
input($,5.)


data ;
input x@@;
cards;
1 2 3 4;
run;
#@@的作用是可以把一行的变量读到一个变量去

data ;
input x y@@;
cards;
1 2 3 4; #1,给X2给y然后3又给X
run;
#Data后无数据集名字,会自动生成

@n从第n列开始读取数据,+n 从当前第n行加两行 #n跳到第n行来

:读值时第一次遇到分隔符或是数据行末尾 或是读满列数而结束 &字符型输入值可以嵌有一个或几个空格 ~字符型输入值保留引号

put all 输出所有变量的值

data a;
do n=2 to total;
set orange.flow point=n nobs=total;
output;end;stop;run;

data a;
infile cars dlm=',';
input x y z;
cards;
1,2,3
44,5,6;
data jn;
input a b ;
file print;
put _n_;
if a>3 then delete;
cards;
1 2 
3 3
 6 3
 3 3
 ;

data ;
input x 1-3 y;#表示X读取位数为3 剩下的是y
cards;

stop不会继续后面的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值