我有一个类似的数据帧
CHR | 开始_pos | 结束_pos | SNP | plink.A2 | plink.A1[/tr>
---|---|---|---|---|
1 | 72837488 | 72837558 | rs7531118CT||
1 | 74993592 | >74993592 | rs1514174 | T | C
1 | 78049140 | >78049140 | rs17381664 | C | T
这里有一个选项,我们在执行rowwise
、unnest
和list
列之后,通过添加向量"v1",将"Start_pos"、"End_pos"转换为list
列
library(dplyr)
library(tidyr)
df1 %>%
rowwise %>%
mutate(Start_pos = list(c(Start_pos, Start_pos + v1)),
End_pos = list(c(End_pos, End_pos + v1))) %>%
unnest(c(Start_pos, End_pos))
或者另一个选项是crossing
来创建组合,然后通过添加列"v1"来mutate
"pos"列
df1 %>%
crossing(v1 = c(0, v1)) %>%
mutate(across(ends_with('pos'), ~ . + v1), v1 = NULL)
-输出
# A tibble: 33 x 6
# CHR Start_pos End_pos SNP plink.A2 plink.A1
# <int> <dbl> <dbl> <chr> <chr> <chr>
# 1 1 72837488 72837558 rs7531118 C T
# 2 1 72837559 72837629 rs7531118 C T
# 3 1 72837629 72837699 rs7531118 C T
# 4 1 72837699 72837769 rs7531118 C T
# 5 1 72837769 72837839 rs7531118 C T
# 6 1 72837839 72837909 rs7531118 C T
# 7 1 72837909 72837979 rs7531118 C T
# 8 1 72837979 72838049 rs7531118 C T
# 9 1 72838049 72838119 rs7531118 C T
#10 1 72838119 72838189 rs7531118 C T
# … with 23 more rows
数据
df1 <- structure(list(CHR = c(1L, 1L, 1L), Start_pos = c(72837488L,
74993592L, 78049140L), End_pos = c(72837558L, 74993592L, 78049140L
), SNP = c("rs7531118", "rs1514174", "rs17381664"), plink.A2 = c("C",
"T", "C"), plink.A1 = c("T", "C", "T")), class = "data.frame",
row.names = c(NA,
-3L))
v1 <- c(71, 141, 211, 281, 351, 421, 491, 561, 631, 701)