更改 SAS 中的数据结构

问题描述 投票:0回答:1

我有一组 SAS 数据,其中每个单独的条目都需要重新分配给只有 2 个变量的临时数据集:颜色和数字。现在该集合被组织成这样的列:

黑色 灰色 红色 白色
57 59 60 78
67 76 81 50
52 62 47 66

我最初考虑使用 do 语句来迭代每个条目,但设置起来遇到困难。

database loops sas format dataset
1个回答
0
投票

使用数组并循环遍历每个值。使用变量的名称来识别其颜色。

data want;
    set have;
    array c[*] Black--White;
    
    do i = 1 to dim(c);
        color = vname(c[i]);
        value = c[i];         
        output;
    end;

    keep color value;
run;

与将数据堆叠四次相比,这是一种更通用的方法:

data want;
    set have(in=b rename=(black=value))
        have(in=g rename=(gray=value))
        have(in=r rename=(red=value))
        have(in=w rename=(white=value))
    ;

    select;
        when(b) color='Black';
        when(g) color='Gray';
        when(r) color='Red';
        when(w) color='White';
        otherwise;
    end;

    keep color value;
run;
color   value
Black   57
Gray    59
Red     60
White   78
Black   67
Gray    76
Red     81
White   50
Black   52
Gray    62
Red     47
White   66
© www.soinside.com 2019 - 2024. All rights reserved.