r - 在 R dplyr 中将一个小句子分成多行,每行用一个字符串

标签 r dplyr data.table tidyverse stringr

我有一个如下所示的数据框

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 于 2022 年 2 月 2 日创建(v2.0.1)

我想让它看起来像这样

   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

关于r - 在 R dplyr 中将一个小句子分成多行,每行用一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70954423/

相关文章:

r - 如何计算每个类别中的非零值

读取嵌入双引号和逗号的 CSV 文件

r - 使用另一个 data.table 子集一个 data.table

r - ggplot2 热图 : how to preserve the label order?

r - 如何更改 R 中堆积条形图的堆积顺序?

使用 dplyr rename(across(

R 将列按行转换为 JSON

R计算事件日前后的天数

r - 如何按组或类别(按组)将列中的值与 R 中同一数据框中的其他列(具有多个值)匹配

r - R中因子水平的分位数