我有这种数据格式:
df <- data.frame(seqpart=factor(c("", "ccagttgttg", "tttgattcg", "ctttgtc","", "ctttgtcga","cttagta", "ttactgt", "ttacat")),
seqinfo= factor(c("IDseq1|specie1", "", "","","IDseq2|specie2","","","","")))
> df
seqpart seqinfo
<NA> IDseq1|specie1
ccagttgttg <NA>
tttgattcg <NA>
ctttgtc <NA>
<NA> IDseq2|specie2
ctttgtcga <NA>
cttagta <NA>
ttactgt <NA>
ttacat <NA>
我想根据列
seqinfo
连接行,以使用这种新格式构造另一个数据:>df1
seqinfo seq
IDseq1|specie1 ccagttgttgtttgattcgctttgtc
IDseq2|specie2 ctttgtcgacttagtattactgtttacat
有没有办法做到这一点?非常感谢
最佳答案
我们基于'seqinfo'中存在非空白元素来创建分组变量('grp'),将'seqinfo'中的非空白元素与paste
'seqpart'一起获得
library(data.table)
setDT(df)[, .(seqinfo = seqinfo[seqinfo!=''],
seqpart = paste(seqpart, collapse='')),.(grp = cumsum(seqinfo !=""))][, grp := NULL][]
# seqinfo seqpart
#1: IDseq1|specie1 ccagttgttgtttgattcgctttgtc
#2: IDseq2|specie2 ctttgtcgacttagtattactgtttacat
关于r - 根据另一列的值连接一列的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45298279/