我的数据框看起来像:
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
答案 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