我有一个 Dataframe df。
df <- data.frame(SNP = c("chr2:178514676:CT:C", "chr2:178514676:CT:CTT", "chr2:178515045:T:<*:DEL>", "chr2:178515048:<*:DEL>:T"))
我想将df$SNP
拆分为:
,但如果有〈*:DEL〉,我想将其作为一个完整的元素保留。
结果df应包含另外4列:
SNP new_CHR new_POS REF ALT
chr2:178514676:CT:C chr2 178514676 CT C
chr2:178514676:CT:CTT chr2 178514676 CT CTT
chr2:178515045:T:<*:DEL> chr2 178515045 T <*:DEL>"
chr2:178515048:<*:DEL>:T chr2 178515048 <*:DEL> T
我创建了这样的四列,但不会给予正确的结果,因为<*:DEL>
也会被拆分。df$REF <- sapply(strsplit(df$SNP, split=":"), "[", 3)
2条答案
按热度按时间jdgnovmf1#
一种选择是在管道中包含
gsub
步骤,而您有:您可以将其更改为:
这只是将出现的“〈*:DEL〉”替换为“〈*DEL〉”,这样它就不会在分隔符上拆分。如果愿意,可以在
separate
函数后面包含另一个gsub
,将冒号放回。7rtdyuoh2#
我们可以删除**mutate()**函数中的额外参数。因此,一个更简化的代码可能如下所示。