我有两个数据集,看起来像这样:
类型 | 开始 | 结束 | 宽度 |
---|---|---|---|
A | 171 | 884 | 714 |
A | 20639 | 21148 | 510 |
乙 | 1287309 | 1287818 | 510 |
昏暗(生物数据) 126 4
ID | 顺序 | 开始 | 结束 |
---|---|---|---|
1 | TTTTCACA | 209 | 218 |
2 | TTTTGCACA | 500 | 508 |
3 | TTTTACACA | 5233 | 5242 |
4 | TTTTCACA | 1287900 | 1287909 |
昏暗(共识序列) 8394 4
我想验证 biological_data 中的位置是否包含 consensus_seq 文件中的序列。因此,理想情况下,我想获得一个修改过的 biological_data 表,该表将包含一个新列,其中包含该位置包含的共识序列列表。
理想结果方案:
类型 | 开始 | 结束 | 宽度 | 共识ID |
---|---|---|---|---|
A | 171 | 884 | 714 | 1 2 |
A | 20639 | 21148 | 510 | NA |
乙 | 1287309 | 1287818 | 510 | 4 |
我不是生物信息学家,甚至我也不是天天用R或Python,所以对我来说很有挑战
所以,我找到了比较这些位置的开始和结束的最佳方法。 如果短共有序列的开始和结束包含在来自 biological_data 的序列范围内,则打印此共有序列 ID。
我试过:
ifelse (biological_data$start <= 171 & biological_data$end >= 884, consensus_seq$ID, NA)
然后我从 biological_data 中得到一个位置列表,其中包含 consensus_sequence 1 ...但是,对每 8394 个序列手动执行它是不可能的,或者需要很多时间。
当我尝试过时:
ifelse (biological_data$start <= consensus_seq$Start & biological_data$end >= consensus_seq$end, consensus_seq$ID, NA)
警告信息: 1:在 biological_data$start <= consensus_seq$Start : longer object length is not a multiple of shorter object length 2: In biological_data$end >= consensus_seq$end 中: 较长的物体长度不是较短物体长度的倍数
如何自动化“ifelse process”?如何将第二个数据集(consensus_seq)的每个位置与第一个数据(biological_data)的每个位置进行比较?在 R 中有可能吗?