我尝试合并ifelse
和chartr
,但失败了。
示例数据
test <- data.frame("pos" = 1:5, "ref" = c("A", "T", "C", "C","G"), "alt" = c("G","C", "A", "T", "A"), "sample" = c("A", "A", "C", "G", "G"))
View(test)
+---------+------+-------+----------+
| pos | ref | alt | sample1 |
+---------+------+-------+----------+
| 1 | A | G | A |
| 2 | T | C | A |
| 3 | C | A | C |
| 4 | C | T | G |
| 5 | G | A | G |
+---------+------+-------+----------+
所需的输出
+---------+------+-------+----------+
| pos | ref | alt | sample1 |
+---------+------+-------+----------+
| 1 | A | G | A |
| 2 | T | C | T |
| 3 | C | A | C |
| 4 | C | T | C |
| 5 | G | A | G |
+---------+------+-------+----------+
答案 0 :(得分:0)
您可以使用库 dplyr 来操纵数据集。例如,使用mutate()
,您可以检查示例调用是否与参考匹配。
然后,您可以使用ifelse()
进行一些更改。
library(dplyr)
test %>%
mutate(TEST1 = (ref == sample)) %>%
mutate(sample2 = ifelse(TEST1 == TRUE, ref, sample))
# pos ref alt sample TEST1
# 1 1 A G A TRUE
# 2 2 T C A FALSE
# 3 3 C A C TRUE
# 4 4 C T G FALSE
# 5 5 G A G TRUE
答案 1 :(得分:0)
使用 ifelse 和 chartr :
ifelse(test$sample == test$ref, test$sample, chartr("ATCG", "TAGC", test$sample))
# [1] "A" "T" "C" "C" "G"
答案 2 :(得分:0)
尽管您在R中寻求解决方案,但您仍可能需要考虑其他工具来翻转钢绞线,特别是如果您需要进行较大规模的加工时。您可以使用Plink和许多其他工具来做到这一点。另外,我可能会寻求从其记录/方法说明中确认公共数据中的链对齐。如果/似乎仅翻转了公共数据集中的某些SNP,那将是可疑的(人们希望同一来源的数据中的对齐方式是一致的)。 另外,如果使用位置参数,则应在公共数据中确认基因组的构建/版本,因为不同的版本也可能引起混淆。最后,我可能还想确保问题中的SNP不是多等位基因,因为它也可能是差异的来源。