如何在r中的数据框中查找主要和次要元素

时间:2015-08-16 01:16:09

标签: r dataframe

我的数据框看起来像:

         ID     ref alt refN altN
  Chr1_1369       G   T  351  165
 Chr1_54979       G   A  130  309
Chr1_187626       C   G  319  219
Chr1_196254       C   G  171  364
Chr1_224569       C   T  463   90
Chr1_275670       T   C  271  262
Chr1_305245       A   C  246  285
Chr1_313716       T   C  505   51

" refN"列是" ref"和" altN"的列数。是" alt"的计数数字。柱。我想创建另外两列来保存" ref"的主要和次要元素(加倍)。或" alt",分别取决于" refN"之间的比较。和" altN"。 " ref"中相应的双重元素或" alt"将被放入" major"如果列中的值为" refN"或" altN"更大,而较小的将被放入" minor"。在这种情况下,预期结果是:

         ID     ref alt refN altN  major minor
  Chr1_1369       G   T  351  165   GG    TT
 Chr1_54979       G   A  130  309   AA    GG
Chr1_187626       C   G  319  219   CC    GG
Chr1_196254       C   G  171  364   GG    CC
Chr1_224569       C   T  463   90   CC    TT
Chr1_275670       T   C  271  262   TT    CC
Chr1_305245       A   C  246  285   CC    AA
Chr1_313716       T   C  505   51   TT    CC

1 个答案:

答案 0 :(得分:2)

您可以使用ifelse选择正确的加倍版本:

dat$major <- ifelse(dat$refN >= dat$altN, paste0(dat$ref, dat$ref), paste0(dat$alt, dat$alt))
dat$minor <- ifelse(dat$refN < dat$altN, paste0(dat$ref, dat$ref), paste0(dat$alt, dat$alt))
dat
#            ID ref alt refN altN major minor
# 1   Chr1_1369   G   T  351  165    GG    TT
# 2  Chr1_54979   G   A  130  309    AA    GG
# 3 Chr1_187626   C   G  319  219    CC    GG
# 4 Chr1_196254   C   G  171  364    GG    CC
# 5 Chr1_224569   C   T  463   90    CC    TT
# 6 Chr1_275670   T   C  271  262    TT    CC
# 7 Chr1_305245   A   C  246  285    CC    AA
# 8 Chr1_313716   T   C  505   51    TT    CC