我在 R 中有兩個資料框,recurrent 和 L1HS。我正在嘗試找到一種方法來做到這一點:
如果回圈中的序列與 L1HS 中的序列匹配,則將回圈中的列中的值粘貼到 L1HS 中的新列中。
回圈資料框如下所示:
> head(recurrent)
chr start end X Y level unique
1: chr4 56707846 56708347 0 38 03 chr4_56707846_56708347
2: chr1 20252181 20252682 0 37 03 chr1_20252181_20252682
3: chr2 224560903 224561404 0 37 03 chr2_224560903_224561404
4: chr5 131849595 131850096 0 36 03 chr5_131849595_131850096
5: chr7 46361610 46362111 0 36 03 chr7_46361610_46362111
6: chr1 20251169 20251670 0 36 03 chr1_20251169_20251670
L1HS 資料集包含許多包含基因序列堿基對的列和一列“Sequence”,希望在回圈資料框中與“unique”有一些匹配,如下所示:
> head(L1HS$Sequence)
"chr1_35031657_35037706"
"chr1_67544575_67550598"
"chr1_81404889_81410942"
"chr1_84518073_84524089"
"chr1_87144764_87150794"
我知道如何使用搜索匹配項
test <- recurrent$unique %in% L1HS$Sequence
獲得布林值:
> head(test)
[1] FALSE FALSE FALSE FALSE FALSE FALSE
但是我從這里有幾個問題。如果找到序列,我想將回圈資料集中的“級別”值復制到新列中的 L1HS 資料集中。例如,如果在全長資料中找到來自回圈資料的序列“chr4_56707846_56708347”,我希望全長資料框看起來像:
Sequence level other_columns
chr4_56707846_56708347 03 gggtttcatgaccc....
我正在考慮嘗試類似的東西:
for (i in L1HS){
if (recurrent$unique %in% L1HS$Sequence{
L1HS$level <- paste(recurrent$level[i])}
}
但當然這不起作用,我無法弄清楚。
我想知道這里最好的方法是什么!我想知道合并/相交/應用是否可能更容易/更好,或者對于像這樣一個簡單的問題,最佳實踐可能是什么樣的。我為 Python/pandas 找到了一些類似的示例,但我被困在這里。
提前致謝!
uj5u.com熱心網友回復:
你可以做一個簡單的left_join添加level到L1HS.dplyr
library(dplyr)
L1HS %>%
left_join(., recurrent %>% select(unique, level), by = c("Sequence" = "unique"))
或與merge:
merge(x=L1HS,y=recurrent[, c("unique", "level")], by.x = "Sequence", by.y = "unique",all.x=TRUE)
輸出
Sequence level
1 chr1_35031657_35037706 4
2 chr1_67544575_67550598 2
3 chr1_81404889_81410942 NA
4 chr1_84518073_84524089 3
5 chr1_87144764_87150794 NA
*注意:這仍將保留L1HS. 我只是沒有在下面的示例資料中創建任何其他列。
資料
recurrent <- structure(list(chr = c("chr4", "chr1", "chr2", "chr5", "chr7",
"chr1"), start = c(56707846L, 20252181L, 224560903L, 131849595L,
46361610L, 20251169L), end = c(56708347L, 20252682L, 224561404L,
131850096L, 46362111L, 20251670L), X = c(0L, 0L, 0L, 0L, 0L,
0L), Y = c(38L, 37L, 37L, 36L, 36L, 36L), level = c(3L, 2L, 3L,
3L, 3L, 4L), unique = c("chr4_56707846_56708347", "chr1_67544575_67550598",
"chr2_224560903_224561404", "chr5_131849595_131850096", "chr1_84518073_84524089",
"chr1_35031657_35037706")), class = "data.frame", row.names = c(NA,
-6L))
L1HS <- structure(list(Sequence = c("chr1_35031657_35037706", "chr1_67544575_67550598",
"chr1_81404889_81410942", "chr1_84518073_84524089", "chr1_87144764_87150794"
)), class = "data.frame", row.names = c(NA, -5L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460403.html
