0
我的数据集具有3个SNP,它看起来像下面如何修改SNP值?
Id SNP1 SNP 2 SNP3
1 AA AA AA
2 AG AC AG
3 GG CC GG
4
5
6 So on
在SNP1 - 我想修改值AA = 2,AG = 1,GG = 0和同样地在SNP1和SNP2
如何我可以这样做吗?
我的数据集具有3个SNP,它看起来像下面如何修改SNP值?
Id SNP1 SNP 2 SNP3
1 AA AA AA
2 AG AC AG
3 GG CC GG
4
5
6 So on
在SNP1 - 我想修改值AA = 2,AG = 1,GG = 0和同样地在SNP1和SNP2
如何我可以这样做吗?
我会将新值置于proc format
,以便您可以保留现有的值,但显示格式化的值,或使用格式转换现有的值。这是两种方法来做到这一点。
/* create format */
proc format;
value $snpfmt 'AA' = '2'
'AG' = '1'
'GG' = '0'
;
run;
/* create initial dataset */
data have;
input Id SNP1 $ SNP2 $ SNP3 $;
datalines;
1 AA AA AA
2 AG AC AG
3 GG CC GG
;
/* option1 - format the values */
proc datasets lib=work nodetails nolist;
modify have;
format snp1 snp2 snp3 $snpfmt2. ;
quit;
/* option2 - change the values using the format */
data want;
set have;
snp1 = put(snp1,$snpfmt2.);
snp2 = put(snp2,$snpfmt2.);
snp3 = put(snp3,$snpfmt2.);
run;
非常感谢!让我试试这个! –
为什么不使用一个简单的if语句在datastep'如果SNP1 = “AA”,那么SNP1 = “2”;如果SNP1 =“AG”,那么SNP1 =“1”; ...?? snp有多少个不同的替换值,只有你提到的3个?如果是这样,我会去简单的方式,否则,如果你有许多不同的值应该被取代,我会建立一个宏的do循环自动化它... – kl78