第一次接触sas编程

第一次的代码学习,一点点的小感受,一起来分享

简单的运用,趁着我还记得,先说几个快捷键

1、F3:对选中的程序进行运行

F5:对全部的程序给予运行

ctrl+shift+/:将锁定的程序进入运行的进程之中

ctrl+/:将程序锁定,无论何时也不参与运行

2、宏变量的设置与使用

宏变量可以使一个比较麻烦的长值字符串瞬间转化为非常简单的赋值变量,可以用很简单的几个词就可以得到想要的结果。

赋值的表达式为:%let  变量名=想让变量代替的值(这里是唯一确定的字符串)

使用宏变量,要对变量进行的使用"&宏变量.",重点&、""、.,永远不容忽视

%let path=路径or字符串值

3、填补缺失值,对原有的变量重新编入新的变量

if missing(缺失的字段名称) then
           do;
                新生成的字段名称=‘Unknown‘;
           end;
     else 新生成的字段名称=原来的字段名称;

(else if 原来的字段名称=0 then
           do;
                新生成的字段名称=‘0‘;
           end;
     else if 原来的字段名称=1 then
           do;
                新生成的字段名称=‘1‘;
           end;)括

号内的语句和上面的效果一致,若是变量都有变化,用下面会更好;若是变量不变且有较多的取值时,最好是用上面的编程语句,简单速度。

4、连续型变量的拆分及语句的划分

proc rank data=build_sample(keep=输出变量1   输出变量2) out=temp3(输出的表名)   group=10(分组);

var em_months_last_open;    赋新的变量名

ranks rank;      排序

run;

sas 中调用 mysql 的 select 语句

proc sql;

select rank,     min(em_months_last_open) as min,      max(em_months_last_open) as max      from temp3      group by 1     order by 1 ;

quit;

data temp4;     所得值放入新表,新表名字为temp4

set temp3;       从上图所得表temp3中抽取信息

format  category $30.;   格式设置为变量30的数值型

下句为if的条件循环语句,将所有的个例全部划分到其10个分组之中。

if   missing(em_months_last_open)  then

do;

category=‘Unknown‘;

bin=1;

end;

else   if   em_months_last_open<=0.131422     then

do;

category=‘LOW-0. 131422‘;

bin=2;

end;

else    if     em_months_last_open<=0.406213 then

do;

category=‘0.131422<-0.406213‘;

bin=3;

end;

else     if    em_months_last_open<=1.116487  then

do;

category=‘0.406213<-1.116487‘;

bin=4;

end;

else    if       em_months_last_open<=2.555556    then

do;

category=‘1.116487<-2.555556‘;

bin=5;

end;

else   if   em_months_last_open<=5.318399    then

do;

category=‘2.555556<-5.318399‘;

bin=6;

end;

else  if   em_months_last_open<=9.715651   then

do;

category=‘5.318399<-9.715651 ‘;

bin=7;

end;

else  if   em_months_last_open<=15.48566  then

do;

category=‘9.715651<-15.48566‘;

bin=8;

end;

else  if  em_months_last_open<=22.73417 then

do;

category=‘15.48566<-22.73417‘;

bin=9;

end;

else   if   em_months_last_open<=37.29152 then

do;

category=‘22.73417<-37.29152‘;

bin=10;

end;

else   if   em_months_last_open>37.29152    then

do;

category=‘37.29152-HIGH‘;

bin=11;

end;

run;

最后再用一个sql语句 计算我所想要的值,恰恰也生成了一个新的变量

proc sql;

create  table  (新表名字)profile_em_months_last_open   as    select   ‘em_months_last_open‘    as     var,  category,

count(*) as count ,    sum(dv_response) as responders,      count(*)/&total_cnt.前面赋值的一个宏变量   format percent9.1 as percent,

sum(dv_response)/count(*)  as Response_rate,    100*(sum(dv_response)/count(*))/&avg_rr.前面赋值的一个宏变量  as index

from  temp4        group by 1,2

order by 1,2 ; group by 分别指不同的字段变量,这里表示的是var和category。

quit;

5、 变量的重要性最好控制在30%以内,这样方才说明你的变量选择是正确的,因为很有可能你的一个变量很大程度能决定你的结果,这样的结果反而是不好的,同时也能说明你落下了一些重要的自变量,即你的自变量是不足的。

6、concents,属性,内容

proc contents data=dt.response_model;
    run

看看表的字段变量的属性

时间: 2024-11-05 20:39:22

第一次接触sas编程的相关文章

第一次接触oc

第一次接触oc,要明白oc与之前所接触过得C语言不同,oc是面向对象而C语言是面向过程的,对于新手来说分清这2个的区别还是挺困难的. 首先面向过程是一种以事件为中心的编程思想—分析出解决问题所需的步骤,然后用函数把这些步骤一步一步实现,使用的时候一步一步调用. 而面向对象是一种以事物为中心的编程思想,体现在它是把问题分解给各个对象,建立对象不是为了完成一个步骤,而是为了描述某个事物在整个问题的步骤中的行为.力图使计算机语言对事物的描述与现实中改事物的本来面目尽可能一致. 这时候我们 就要了解什么

《SAS编程与数据挖掘商业案例》学习笔记之十六

<SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包含:宏变量.宏函数.宏參数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-token:是一个宏语句或宏函数 &name-token:是一个宏变量引用 宏变量不依赖于sas数据集,能够在不论什么一个除数据行以外的地方定义和引用宏变量,一般定义的宏变量为局部变量,除非使用%global,定义宏变量用%let,显示宏变量用%put,调用宏变量用&. eg: %let a=xx

第一次接触OC多态,动态类型与动态绑定

多态:允许不同的类定义相同的方法. 动态类型:程序直到执行时才能确定所属的类. 动态绑定:程序直到执行时才能确定实际要调用的方法. id类型:一种通用的对象类型,也就是说,id可以用来存储属于任何类的对象,让不同类的输出不用特定设定,通用一个id类型就好. 多态的出现时为了让不同的类能使用同明的方法.比如add,这个让程序的可读性大大提高,也降低了编程难度.add就是+,哪种类型的+都用add标明方法,清晰易懂. 动态类型与动态绑定是为了解决随多态的便利而引起的弊端,有了动态类型与动态绑定,不用

第一次接触oracle数据库与suse系统心得

第一次搭建oracle用了两天时间.............. 经历了太多的艰难 所以做一些总结 总结,心得: 因为昨天安装多次未成功,所以今天在部署前,先总结了一下昨天出现的问题,提前做好了一些相应的措施,避免了一些不必要的麻烦 先叙述下昨天的大概流程:            昨天在安装的时候,先是在网上找了文档,然后就开始在VMware上部署oracle的运行环境SUSe11 当时VMware上给的配置如下:(处理器1p/1c 内存1G 硬盘10G 等系统安装完成后就开始配置网络,让虚拟机与

《SAS编程和数据挖掘商业案例》学习笔记# 19

继续<SAS编程与数据挖掘商业案例>学习笔记,本文側重数据处理实践.包含:HASH对象.自己定义format.以及功能强大的正則表達式 一:HASH对象 Hash对象又称散列表,是依据关键码值而直接进行訪问的数据结构.是依据关键码值而直接进行訪问的数据结构. sas提供了两个类来处理哈希表.用于存储数据的hash和用于遍历的hiter,hash类提供了查找.加入.改动.删除等方法,hiter提供了用于定位和遍历的first.next等方法. 长处:键值的查找是在内存中进行的,有利于提高性能:

第一次接触实际环境---NAT转换

今天在技术群里,有个做软件的哥们公司里面要安装网络,就剩一个NAT了,后来我就主动接茬,其实没接触过真实的网络,第一次接触我也挺紧张的,第一次就这么破了^_^,其实很简单,但是我很高兴,那就给大家讲一下咯\(^o^)/~ 今天原本要用NAT的但是考虑到他公司的电脑多,没用NAT,用的PAT 先说一下NAT和PAT的区别吧 NAT的地址转换是指每个内网地址都被转换成ip地址+源端口的方式,这需要公网ip地址为多个.而PAT由于ip地址不足够,就会出现内网地址被转换成ip地址+端口段的形式,这样的公

《SAS编程与数据挖掘商业案例》学习笔记之十九

继续<SAS编程与数据挖掘商业案例>学习笔记,本文侧重数据处理实践,包括:HASH对象.自定义format.以及功能强大的正则表达式 一:HASH对象 Hash对象又称散列表,是根据关键码值而直接进行访问的数据结构,是根据关键码值而直接进行访问的数据结构, sas提供了两个类来处理哈希表,用于存储数据的hash和用于遍历的hiter,hash类提供了查找.添加.修改.删除等方法,hiter提供了用于定位和遍历的first.next等方法. 优点:键值的查找是在内存中进行的,有利于提高性能: h

空调的进化史:“大多数美国人是在电影院第一次接触到空调的”

空调的进化就像人类的进化一样,适者生存:区别在于,人类是为了适应自然环境的需求而空调是为了满足人类不断变化的需求.夏天睡醒了,为了大家的福利着想,现在就来"八一八"空调的进化史吧,看看人类都有什么稀奇古怪的需求?!空调又是如何变化的?现在的空调又是以怎样的难以想象的高科技颠覆你的"三观"?未来的空调又将会是怎样的逆天存在? 空调的进化史 你知道吗?空调最初并不是因为人才产生的,而是源于一个印刷作坊,印刷机由于空气湿度与湿度的变化使得纸张伸缩不定,对位不准,印出来的东

第一次接触shiro --- 开源之旅

1)shiro的身份验证过程在外界主要是和subject打交道,就行登录 3)SecurityManage负责整个身份验证的过程 2)和对于整个过程需要个来源,就是realm 第一次接触shiro --- 开源之旅