我的SAS菜鸟之路3

SAS数据集的转置

  • proc transpose <out=数据集> <name=变量名>

    • out:转置后的数据集名称;无则默认为原数据集
    • name为该变量新命名的名字
  • by 变量1.....

    • by语句指定的变量不进行转置
  • id 变量1 变量2

    • id语句指定转置前数据集中的一个变量,无则默认转置后的变量名依次为_NAME_、COL1、COL2、COL3、……
  • var 变量1 变量2

    data vas;
    input name$ id group vas1-vas3;  
    cards;
    LIXM 1 1 5 5 6
    ZHMI 2 2 8 5 5
    FEND 3 2 7 4 5
    LIMZ 4 1 6 6 3
    WAXF 5 2 6 7 5
    DOCX 6 1 6 5 5
    ;                
    proc transpose data =vas out=vas1 name =name;
    id name;
    proc print;
    run;
    

数据集的比较

  • proc compare <base=数据集 compare=数据集> ;

    • nosummary的作用是不显示一些概括性的结果
  • by变量1 变量2 ……;

    • by后通常是id号,保证比较时不会出现错位

    对变量进行注释

    • [ ] ``` SAS
      data baseline;
      input id gender age;
      label gender="性别" age="年龄";
      cards;
      1 1 36
      2 2 33
      3 1 31
      4 2 30
      ;
      proc print label;
      run;

    对变量的值进行标注

    • proc format;

      invalue <$> 格式名 变量或范围1=输入格式1 变量或范围2=输入格式2 ……;

      value <$> 格式名 变量或范围1=输出格式1 变量或范围2=输出格式……;

      • 个人认为invalue与value中的$是伴随出现的
      proc format;
      invalue age low-<40=30 40-<50=40 50-<60=50 60-high=60;
      value gfmt 1="male" 2="female";       
      data age;
      input id gender age age.;
      format gender gfmt.; 
      
      

设置变量长度

  • 在SAS中新变量出现时的长度即为该变量的长度,无法改变,因此可通过length函数进行设置。
    • length 变量1 <$> 长度1 变量2 <$> 长度2

数值函数

函数 用途
mod(x,y) 返回x除以y的余数
abs(x) 返回x的绝对值
exp(x) 返回x的指数值
log(x) 返回x的自然对数
log10() 返回x以10为底的对数值
sqrt(x) 返回x的平方根

与数值舍入有关

函数 用途
cel(x) 返回>=x的最小整数
floor(x) 返回<=x的最大整数
int(x) 返回x的整数部分
函数 用途 函数 用途
n 求例数(不含缺失值) sum 求和
nmiss 求缺失例数 stderr 求标准误
mean 求均数 min 求最小值
median 求中位数 max 求最大值
geomean 求几何均数 smallest 求第几小的值
std 求标准差 largest 求第几大的值
range 求全距 pctl 求百分位数
iqr 求四分位数间距
  • input函数的主要作用是将字符型变量转换为数值型
  • put函数的主要作用是将数值型变量转换为字符型

更改大小写字母

  • upcase作用是将所有字母改为大写
  • lowcase 作用是将所有字母改为小写、

变量或字符串的连接捏

cat (变量或字符串1,…) 合并几个变量或字符串,包括空格
cats (变量1,…) 合并几个变量或字符串,去除空格
catx(分隔符,变量或字符串1,…) 合并几个变量或字符串,可插入自定义分隔符

查找变量中的字符串

  • find(变量或字符串,查找内容<,“i"> <,起始位置>)

    • i表示忽略大小写
    • v对于多个字符的查找,find必须是所有字符都完全匹配才算找到
  • findc(变量或字符串,查找内容<,“i"> <,起始位置>)

    • 而indc只要找到字符中的任意一个就算找到
原文地址:https://www.cnblogs.com/yangzilaing/p/13061919.html