分离功能的问题

problems with separate function

我正在尝试将 1 列“A1A2”分成 2 列,A1 和 A2。

head(merged2)
            
SNP        A1A2   P
1:12321    AG     3 
2:1231232  TC     12
8:1231321  GG     13

我要:

SNP        A1    A2   P
1:12321    A     G    3 
2:1231232  T     C    12
8:1231321  G     G    13

我试过了:

merged3 <- merged2 %>% separate( A1A2, c( "A1", "A2" ) )

但这导致第二列中的 NA:

SNP        A1    A2       P
1:12321    A     <NA>    3 
2:1231232  T     <NA>    12
8:1231321  G     <NA>    13

有谁知道为什么会这样以及如何让代码合作?

您可以使用 extract,如果适合您:

df %>% extract(A1A2, into = c('A1','A2'), regex = '(.)(.)')
# A tibble: 3 x 4
  SNP       A1    A2        P
  <chr>     <chr> <chr> <dbl>
1 1:12321   A     G         3
2 2:1231232 T     C        12
3 8:1231321 G     G        13

问题出在 sep 参数上,默认情况下它以非字母数字字符分隔。

这里,一种解决方案是使用一个数字作为sep,表示在哪个位置剪切:

merged2 %>%
    separate( A1A2, c( "A1", "A2" ), sep = 1 )
#>         SNP A1 A2  P
#> 1   1:12321  A  G  3
#> 2 2:1231232  T  C 12
#> 3 8:1231321  G  G 13