编辑:不重叠的一列和公共变量的组合
数据已更新!
我有一个示例数据集
目标 | 开始 | 序列 |
---|---|---|
A | y1 | ccc |
A | y2 | cct |
A | y3 | aag |
A | y3 | act |
B | y1 | aaa |
B | y4 | aat |
并尝试获取类似 R 中的数据集:
目标 | 开始 | 开始 | 序列 |
---|---|---|---|
A | y1 | y2 | ccc,cct |
A | y1 | y3 | ccc,aag,act |
A | y2 | y3 | cct,aag,act |
B | y1 | y4 | aaa,aat |
起始列始终有一个目标,并从起始列的每个组合及其序列列表中寻找没有任何重叠的共同目标。 我尝试通过以下链接使用 mutate() 和 Comb() 帮助进行操作: 链接,但没有达到想要的结果。
有人可以帮助我并给我进一步学习的机会吗?
Data updated!
I have a example data set
Target | Start | sequence |
---|---|---|
A | y1 | ccc |
A | y2 | cct |
A | y3 | aag |
A | y3 | act |
B | y1 | aaa |
B | y4 | aat |
and trying to get dataset like in R :
Target | Start | Start | sequence |
---|---|---|---|
A | y1 | y2 | ccc,cct |
A | y1 | y3 | ccc,aag,act |
A | y2 | y3 | cct,aag,act |
B | y1 | y4 | aaa,aat |
Start column alway has a target and looking for common target from each combination of start column without any overlaps and its list of sequence.
I have tried to manipulate with mutate() and comb() help with following link: link, however did not achieve wanted result.
Can anyone help me and give me a chance to learn further?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以通过对每个组使用
combn
来实现此目的。You may achieve this by using
combn
for each group.这是另一种不使用
combn()
的tidyverse
方法。group_by(Target, Start)
以便任何具有相同Target
和Start
的序列都可以折叠为一行Start<
group_by()
中的 /code> 列Start
列更改为数字,以便我们可以直接比较Start
值Start2
列包含Start
值大于自身,并提取相应的sequence
字符串并存储在sequence2
列中Start2
和sequence2
展开数据框> (因为sapply
每行会有多个输出)group_by(Target, Start, Start2)
,以便我们可以粘贴
序列
与sequence2
Here is another
tidyverse
approach without the use ofcombn()
.group_by(Target, Start)
so that any sequence with sameTarget
andStart
can be collapsed to a single rowStart
column ingroup_by()
Start
column into numeric, so that we can directly compare theStart
valuesStart2
column containingStart
value greater than itself, and extract the correspondingsequence
string and store insequence2
columnStart2
andsequence2
(since there would be multiple output per row bysapply
)group_by(Target, Start, Start2)
so that we canpaste
sequence
withsequence2