sas_2

来源:互联网 发布:mac系统怎么改用户名 编辑:程序博客网 时间:2024/06/05 20:53

记录时间:2017年09月04日 AM

记录人:golden

 

这一周有新的任务,但是我想把前面的任务再好好的检查一遍,于是就挨个检查了一遍。检查到几个数据集的时候,发现有些不对。具体的问题就是我的dataset里面的Observations的数目对不上。然后我就开始找为什么对不上的原因。

起初我以为是因为我的做法不对。需要做的问题是,把针对一个变量的不同取值分组取出来,那么我的办法是先分别针对变量的不同取值分别取出来做成数据集,然后使用merge by就可以了。前面的Record1里面已经提到,在进行merge by之前需要对数据进行proc sort。如果有多个变量,那么这些变量都需要进行proc sort。否则进行merge by的时候,不同dataset的相同的variable会被覆盖。那么这些问题也就解决了。但是现在的问题是为什么observations的数目对不上,所以我不禁怀疑了一下是否在这个地方使用merge是不正确的。处于对自己的不自信,我还是用了另外一种方法proc transpose进行了一下检查。Proc transpose的用法如下:

Proc transpose data=input-dataset put=output-dataset;

    By By-variables;

    Id Id-variables;

    Var Need-to-transpose-name;

    Run;

其中input-dataset:需要被转置的dataset,即原dataset。

Output-dataset:转置后数据输出的dataset。

By-variables:分组转置的分组var,可允许多个变量进行分组。

Id-variables:用来指定被转置的数据的变量名。

Need-to-transpose-name:需要被转置的变量名。若不指定,那么原dataset中的numeric数值型都被转置。(char型必须在Var语句后列出才会被转置。)没有被转置的var不进入output-dataset。

 

这样做出来之后进行比对发下,数据集的observations依然如故。我不禁有一点懵逼,同时也为自己的不自信感到惭愧。最后终于发现了不同之处是什么,那就是我没有对数据集进行标准化。这里的标准化就是虽然有的数据没有列出来,也就是说试验有些没有做,但是在标准化中他是应该存在的。就像你去医院进行体检一样,有很多项,虽然有的项目你并没有进行检查,但是最后的记录里面项目是会存在的,只是数据为空。

最后想说一句,发现了问题并了解问题是怎么来的真的很开心;而且还顺便复习以及加深理解了一下proc transpose过程。希望以后仍然可以发现问题并解决问题。###

Record 3

记录时间:2017年09月04日 AM

记录人:golden

 

这个地方想提一下一个比较简单的但是也是我遇到过的一个问题。说不定以后还会遇到样的问题:在sas中经常会遇到一些特殊符号,当然这些特殊符号指的是在电脑的键盘上没有的符号,比如说温度的单位,这个问题困扰了我好一会,最后还是问了以为大神才知道的解决方法。

解决方法是:找到特殊符号的Unicode编码,在unicode table里面找到特殊符号所在的位置,然后横向有一个四位编码A,纵向有一个两位的编码B;将A和B按照16进制相加得到xxxx;最后在在sas中使用的时候语法是 ~{Unicode xxxx}。比如说温度的单位的unicode 编码是2013;那么使用时就是 ~{Unicode 2013} 。###

原创粉丝点击