• SAS|proc sort(排序)&proc transpose(转置)


    proc sort排序,基本格式:

    proc sort data=<dataset> (out=<newset>);
    	by (descending) <varname1> (descending) <varname2>……;
    run;
    
    • 1
    • 2
    • 3

    proc sort过程将数据集dataset按照varname的值进行升序或者降序,输出为数据集newset;
    by语句是指按照varname1进行排序,值相同时按照varname2进行排序,以此类推;
    descending即降序排列,默认ascending升序;

    proc transpose转置
    长表转宽表,基本格式

    proc transpose data=<dataset> (out=<newset> name=<name> label=<label>);
    	by <by1> <by2>……;
    	var <var>;
    	id <id>;
    	idlabel <idlabel>;
    run;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    name:用来定义var的新变量 的变量名(显示在表格中);
    label:用来定义var的标签的新变量 的变量名(显示在表格中);
    id:即取id中的值 生成新的变量(显示在表格中);
    idlabel:即取idlabel中的值 生成新变量的标签(不显示在表格中);
    var:var的值作为 id中的值生成新变量 的值(显示在表格中)
    by:被保留的变量,控制变量的先后顺序,变量需要提前被sort,notsorted 指允许不排序;

    /*长表vs转宽表vsa */
    proc sort data=vs;
     	by subjid avisit avisitn;
    run;
    
    proc transpose data=vs out=vsa name=a label=b;  
    		/*out指定输出数据集,若无指定,自动将转制后的数据集命名为data1、data2...不会覆盖原有数据集*/ 
    		/*name,label 存储 var 变量值的变量名和标签*/
     	by subjid avisit avisitn;      /*仍然需要保留为变量,包含在转置数据集中,但他们本身并不转置*/
     	var aval;        /*需要转置其值的变量   <var>的变量值会成为Id语句生成的新变量的值; 在转置后的数据集中作为值的变量*/
     	id paramcd;       /*ID变量的值会变成新变量名;转置后按照值生成多个变量的变量*/
     	idlabel param;    /*idlabel变量的值会变成新变量的标签*/
    run;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述
    宽表转长表,基本格式

    proc transpose data=<dataset> out=<newset> prefix=<prefix> name=<name> label=<label>);
    	by <by1> <by2>……;
    	var <var1> <var2>……;
    run;
    
    • 1
    • 2
    • 3
    • 4

    prefix:为var1、var2的值指定新的变量名前缀;
    name:为存储var1、var2变量名的新变量;
    by:by1、by2变量可复制成多条观测,需要提前sort(注意,sort的by语句的变量是哪些,此处的变量就是哪些);
    var:var1、var2指定需要转变的变量名

    /*宽表vs1转长表*vsb/
    
    proc sort data=vs1;
     	by subjid avisitn avisit;
    run;
    
    proc transpose data=vs1 out=vsb /*prefix=st*/ name=param  label=paramcd; /*Name: <name>为存储<var1> <var2>变量名的新变量*/
     	by subjid avisitn avisit;
     	var weight height;    /*由变量变为观测值,其变量下的值转置,由宽转长*/
    run;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

  • 相关阅读:
    【【萌新的SOC学习之GPIO简介】】
    【TI毫米波雷达笔记】IWR6843AOPEVM-G+DCA1000EVM的mmWave Studio数据读取、配置及避坑
    ApacheCon Asia 2022 启动,7 场阿里云大数据 +AI 议题分享等你围观
    IDEA在service面板中不显示微服务的项目
    值得掌握的Java代码优化技巧
    短视频发布的黄金时间,四点两天,找准发布时机才能事半功倍
    嵌入式系统设计与应用---ARM指令集(学习笔记)
    项目申请理论理解---2022.8月
    <MySQL> 查询数据进阶操作 -- 联合查询
    5G投资下降,遥遥领先的主流5G或被运营商抛弃,“假5G”更获青睐
  • 原文地址:https://blog.csdn.net/qq_43776450/article/details/125384780