data a;
input name $ a b ;
cards;
x
x
x
y
y
y
;
run;
%macro transpose;
proc sql noprint ;
select count (distinct name) into:name_n from a;
select distinct name into: name_ separated by"|" from a;
quit;
%do i = %to &name_n;
%let _name = %scan("&name_",&i,"|");
proc sql noprint;
select count(a) into: na from a where name="&_name" ;
select name into:name_x from a where name="&_name";
select a into: aa separated by "|" from a where name="&_name";
select count(b) into: nb from a where name="&_name";
select name into:name_x from a where name="&_name";
select b into: bb separated by "|" from a where name="&_name";
quit;
data tmp;
set a(drop=name);
run;
proc sql noprint;
select name into:varlist separated by "|" from dictionary.columns
where libname="WORK" and memname="TMP";
quit;
data _null_ ;
nvar=count("&varlist","|")+;
call symput("nvar",nvar);
run;
%do j= %to &nvar;
%let _var=%scan(%bquote(&varlist),&j,"|");
data b&i.&j.(keep=name _name_ col: );
name="&_name";
_name_="&_var";
array _a[&na] ;
array _b[&nb] ;
do i = to &na;
_a[i]=scan("&aa",i,"|");
end;
do j = to &nb;
_b[j]=scan("&bb",j,"|");
end;
%do p= %to &&n&_var;
rename _&_var.&p=col&p;
%end;
proc sort nodupkey;by name col:;
run;
%end;
%end;
data wanted ;
set b:;
run;
%mend transpose;
%transpose

Just for fun.

yant07

TRANSPOSE的DATA步实现的更多相关文章

  1. SAS DATA步读取数据

    上面一节讲了SAS的基本概念,以及语法结构,这次主要讲解SAS DATA步读取数据.    1 ·列表输入    2 ·按列输入    3 ·格式化输入  使用DATA步读取数据的基本形式如下: DA ...

  2. SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...

  3. 在SAS数据步中执行过程步的简单示例

    SAS中的许多过程步都是封装好的,而且SAS的编程特点决定了只能是DATA步执行完之后再执行PROC步,或者PROC步执行完之后再执行DATA步.因此有时候DATA步只能利用PROC步执行完之后的结果 ...

  4. sas data infile 语句选项

    1)FIRSTOBS=N,从第N行开始读取数据2)OBS=M,到第M行结束数据读取3)MISSOVER:当一行数据读完的时候,不要转到下一行,而是为其余的变量分配缺失值4)TRUNCOVER:变量读取 ...

  5. reshape column vector data in Matlab

    input: import  data 2. transpose the data 3. reshape the data into array code: matlab load x.dat X=x ...

  6. SAS笔记

    SAS基础知识 SAS里面的PROC一览 The ACECLUS Procedure : 聚类的协方差矩阵近似估计(approximate covariance estimation for clus ...

  7. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

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

    本次重点在:sas数据集管理 主要包含:包含数据集纵向拼接.转置.排序.比較.复制.重命名.删除等 1.append语句 注:base数据集和data两个数据集必须结构一样.避免使用force的情况, ...

  9. 关于PDV的那些事

    数据集中的数据来源分为两种: 一.来自于另一个数据集: 二.来自于外部数据源(本文细说此来源): 无论是哪种来源,在它们成为目标数据集中的观测行(官方叫它observation)之前都要进入PDV,先 ...

随机推荐

  1. python之路2(基础详解)

    python一切都是对象: 列子:

  2. Linux关机和重启命令

    shutdown shutdown [选项] 时间 选项: -c : 取消一个关机命令 -h : 关机 -r : 重启 [root@localhost ~]# date Tue Dec 6 21:06 ...

  3. Try to write a script to send e-mail but failed

    #-*-coding: utf-8 -*- '''使用Python去发送邮件但是不成功,运行后,等待一段时间, 返回[Errno 10060] A connection attempt failed ...

  4. Query Designer:Exception,不同的值显示不同的颜色

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. 在C#中读取枚举值的描述属性

    枚举: public enum EnumLanugage { [System.ComponentModel.Description("中文")] Chinese, English ...

  6. 【原】命令行方式开启WIFI热点

    由于Wifi比较慢,可以使用笔记本(带无线网卡的电脑也可以) 开启无线网络,供手机使用.方法如下:   netsh wlan set hostednetwork mode=allow ssid=qa ...

  7. Linux启动/停止/重启Mysql数据库的方法

    1.查看mysql版本 方法一:status; 方法二:select version(); 2.Mysql启动.停止.重启常用命令 a.启动方式 1.使用 service 启动: [root@loca ...

  8. [JS复习] JS 基础知识

    项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display  :inline or bloc ...

  9. 【转】Python3.x和Python2.x的区别

    这个星期开始学习Python了,因为看的书都是基于Python2.x,而且我安装的是Python3.1,所以书上写的地方好多都不适用于Python3.1,特意在Google上search了一下3.x和 ...

  10. PBS 安装

    How to install PBS Pro using the configure script. . Install the prerequisite packages for building ...