如何使用SAS或MS-Access重新排列此表?

时间:2013-05-19 05:08:50

标签: ms-access sas

我在Microsoft Access和SAS上有一个数据集,其中包含大约一百万个选项价格,其中包含以下字段/列:

DATE, COMPANY, PUT/CALL, PRICE

PUT/CALL变量是一个指标变量,对于每个唯一的 DATE-COMPANY 组合,它们都是 PUT CALL

数字示例:

DATE             COMPANY          PUT/CALL       PRICE
2001/01/01       XOM              PUT            10
2001/01/01       XOM              CALL           12
2001/01/01       ABB              PUT            11
2001/01/01       ABB              CALL           13

我需要的是我的桌子安排:

DATE, COMPANY, PUT PRICE, CALL PRICE

以上带数字的例子,输出应为:

数字示例:

DATE             COMPANY          PUT PRICE      CALL PRICE
2001/01/01       XOM              10             12
2001/01/01       ABB              11             13

有人知道如何使用SAS,Microsoft Access或任何其他软件来完成此操作吗?

2 个答案:

答案 0 :(得分:1)

在SAS中,这很容易。

假设您的第一个表是名为“HAVE”的数据集,并按日期/公司排序:

proc transpose data=have out=want suffix=price;
by date company;
id put_call;
var price;
run;

在Access(或SQL)中,您需要执行SQL查询,如下所示:

create table want as select date,company,
 max(case when put_call='put' then price else null end) as put_price, 
 max(case when put_call='call' then price else null end) as call_price 
 from have group by date,company;

在SQL服务器中,您可以使用数据透视表执行此操作。

答案 1 :(得分:1)

以下适用于Access:

SELECT 
    [DATE], 
    [COMPANY], 
    MAX(IIf([PUT/CALL]="PUT", [PRICE], NULL)) AS [PUT PRICE], 
    MAX(IIf([PUT/CALL]="CALL", [PRICE], NULL)) AS [CALL PRICE] 
FROM [PRICES] 
GROUP BY [DATE], [COMPANY];

请注意......

  • 其中一些列名称中包含空格或“有趣字符”,

  • DATE是Access中的保留字,

...所以方括号[]很重要。