【问题标题】:How to modify the SNP values?如何修改 SNP 值?
【发布时间】:2016-06-22 06:28:37
【问题描述】:

我的数据集有 3 个 SNP,如下所示

Id  SNP1 SNP 2 SNP3  
1    AA   AA    AA  
2    AG   AC    AG  
3    GG   CC    GG  
4    
5
6  So on 

在 SNP1 中 - 我想在 SNP1 和 SNP2 中修改 AA =2、AG =1、GG = 0 和类似的值

我该怎么做?

【问题讨论】:

  • 为什么不在数据步 if SNP1="AA" then SNP1 = "2"; if SNP1="AG" then SNP1="1";... 中使用简单的 if 语句? snp 可以有多少个不同的替换值,只有你提到的 3 个?如果是这样,我会采用简单的 if 方式,否则如果您有许多不同的值应该被替换,我会构建一个带有 do 循环的宏来自动化它......

标签: sas genetics


【解决方案1】:

我会将新值放在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;

【讨论】:

  • 非常感谢!让我试试这个!
猜你喜欢
  • 2012-11-07
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 2018-09-04
  • 1970-01-01
相关资源
最近更新 更多