在 R dplyr 中用一个字符串将一个小句子分成多行
Break a small sentence in multiple rows with a single string each in R dplyr
我有一个看起来像这样的数据框
library(tidyverse)
data=data.frame(POS=c(172367,10), SNP=c("ATCG","AG"), QUAL=c(30,20))
data
#> POS SNP QUAL
#> 1 172367 ATCG 30
#> 2 10 AG 20
由 reprex package (v2.0.1)
创建于 2022-02-02
我想让它看起来像这样
POS SNP QUAL
172367 A 30
172368 T 30
172369 C 30
172370 G 30
10 A 20
11 G 20
我想用单个字符串将多字符串分解成行,然后更改
位置也是。
非常感谢任何帮助
你可以这样做:
library(dplyr)
library(tidyr)
data %>%
separate_rows(SNP, sep = "(?<=[ACGT])") %>%
mutate(POS = ave(POS, POS, FUN = \(x) x + seq_along(x) - 1))
# A tibble: 6 x 3
POS SNP QUAL
<dbl> <chr> <dbl>
1 172367 A 30
2 172368 T 30
3 172369 C 30
4 172370 G 30
5 10 A 20
6 11 G 20
我有一个看起来像这样的数据框
library(tidyverse)
data=data.frame(POS=c(172367,10), SNP=c("ATCG","AG"), QUAL=c(30,20))
data
#> POS SNP QUAL
#> 1 172367 ATCG 30
#> 2 10 AG 20
由 reprex package (v2.0.1)
创建于 2022-02-02我想让它看起来像这样
POS SNP QUAL
172367 A 30
172368 T 30
172369 C 30
172370 G 30
10 A 20
11 G 20
我想用单个字符串将多字符串分解成行,然后更改 位置也是。
非常感谢任何帮助
你可以这样做:
library(dplyr)
library(tidyr)
data %>%
separate_rows(SNP, sep = "(?<=[ACGT])") %>%
mutate(POS = ave(POS, POS, FUN = \(x) x + seq_along(x) - 1))
# A tibble: 6 x 3
POS SNP QUAL
<dbl> <chr> <dbl>
1 172367 A 30
2 172368 T 30
3 172369 C 30
4 172370 G 30
5 10 A 20
6 11 G 20