Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 使用数据表中的值命名列_Sas - Fatal编程技术网

Sas 使用数据表中的值命名列

Sas 使用数据表中的值命名列,sas,Sas,假设我有两列A和B A B 12 "randstr" 39 "randstr" 2 "randstr" 此随机字符串在每行中重复 我对如何获得下表感兴趣: randstr B 12 "randstr" 39 "randstr" 2 "randstr" B列中的值用于重命名A列。我尝试过使用rename和各种宏魔术,但失败了。我不知道如何进行 我尝试了以下答案,但它们不允许从数据中读取值,然后将该值用作

假设我有两列A和B

A     B
12    "randstr"
39    "randstr"
2     "randstr"
此随机字符串在每行中重复

我对如何获得下表感兴趣:

randstr     B
12          "randstr"
39          "randstr"
2           "randstr"
B列中的值用于重命名A列。我尝试过使用
rename
和各种宏魔术,但失败了。我不知道如何进行

我尝试了以下答案,但它们不允许从数据中读取值,然后将该值用作列名:

  • 使用此方法,它相当简单:

    /* get first value in the dataset */
    %let new_col=%mf_getvalue(work.YOURDATA,B);
    
    /* rename variable A */
    proc datasets library=work nolist;
     modify YOURDATA;
     rename A=%sysfunc(dequote(&new_col));
    quit;
    

    这种转换也可以看作是一种逐行换位

    data have;
    attrib A length=8 B length=$32;
    row+1;
    input
    A   & B; datalines;
    12    xyz-123-abc
    39    xyz-123-abc
    2     xyz-123-abc
    run;
    
    proc transpose data=have out=want(drop=row _name_);
      by row;
      var A;
      id B;
      copy B;
    run;
    
    在非玩具场景中,
    B
    列通常不是单个值。对
    B
    中有变化的数据尝试相同的转置。该过程将根据
    B
    的值创建两个新列

    A   & B; datalines;
    12    xyz-123-abc
    39    xyz-123-abc
    2     xyz-123-abc
    3141  xyz-456-def
    

    这是一个家庭作业问题吗,这不是我今天第一次看到它/无论如何,你在寻找如何创建一个格式。谷歌发表了一篇名为:PROC FORMAT的论文,不仅是另一张漂亮的脸,它还有一些非常好的例子。如果你想要真正的代码帮助,你的问题不符合规则,你需要展示你尝试了什么,而不仅仅是说你尝试了什么。@Reeza我很确定PROC FORMAT不会起作用。字符串是随机的,我不能列出所有的值。我已经添加了3个我尝试过的答案。这也不是家庭作业,我在工作中做这件事,刚刚开始玩宏,我想可能有办法。你能把我和你反复看到的问题联系起来吗?行!正是我所需要的。谢谢