0
         Sample    chr        pos_s       pos_e     ref                           alt
        1800753    chr1     9770690     9770694   CAGAG                 C,CAG,CAGAGAG   
        1800532    chr1    45266875    45266877     CTT        C,CT,CTTT,CTTTT,CTTTTT    
        1800671    chr1    45266875    45266878    CTTT         C,CT,CTT,CTTTT,CTTTTT    
        1800563    chr1    45266875    45266878    CTTT    C,CT,CTT,TTTT,CTTTT,CTTTTT    
    

Here is a dataframe, in which the alt column contains the charaters separated by comma. I want to move these characters into different rows and keep the rest columns. Here is an example

     Sample    chr        pos_s       pos_e     ref                           alt
    1800753    chr1     9770690     9770694   CAGAG                             C   
    1800753    chr1     9770690     9770694   CAGAG                           CAG
    1800753    chr1     9770690     9770694   CAGAG                       CAGAGAG
    1800532    chr1    45266875    45266877     CTT                             C
    1800532    chr1    45266875    45266877     CTT                            CT
    1800532    chr1    45266875    45266877     CTT                          CTTT
    1800532    chr1    45266875    45266877     CTT                         CTTTT
    1800532    chr1    45266875    45266877     CTT                        CTTTTT
    1800671    chr1    45266875    45266878    CTTT                             C
    1800671    chr1    45266875    45266878    CTTT                            CT
    1800671    chr1    45266875    45266878    CTTT                           CTT
    1800671    chr1    45266875    45266878    CTTT                         CTTTT
    1800671    chr1    45266875    45266878    CTTT                        CTTTTT
    1800563    chr1    45266875    45266878    CTTT                             C
    1800563    chr1    45266875    45266878    CTTT                            CT   
    1800563    chr1    45266875    45266878    CTTT                           CTT
    1800563    chr1    45266875    45266878    CTTT                          TTTT
    1800563    chr1    45266875    45266878    CTTT                         CTTTT
    1800563    chr1    45266875    45266878    CTTT                        CTTTTT

Any help is appreciated. Thanks.

Lin Caijin
  • 599
  • 4
  • 10

1 Answers1

3
library( tidyverse )
df %>%
  tidyr::separate_rows( alt )

#    Sample chr      pos_s    pos_e ref   alt    
#     <int> <chr>    <int>    <int> <chr> <chr>  
# 1 1800753 chr1   9770690  9770694 CAGAG C      
# 2 1800753 chr1   9770690  9770694 CAGAG CAG    
# 3 1800753 chr1   9770690  9770694 CAGAG CAGAGAG
# 4 1800532 chr1  45266875 45266877 CTT   C      
# 5 1800532 chr1  45266875 45266877 CTT   CT     
# 6 1800532 chr1  45266875 45266877 CTT   CTTT   
# 7 1800532 chr1  45266875 45266877 CTT   CTTTT  
# 8 1800532 chr1  45266875 45266877 CTT   CTTTTT 
# 9 1800671 chr1  45266875 45266878 CTTT  C      
#10 1800671 chr1  45266875 45266878 CTTT  CT     
#11 1800671 chr1  45266875 45266878 CTTT  CTT    
#12 1800671 chr1  45266875 45266878 CTTT  CTTTT  
#13 1800671 chr1  45266875 45266878 CTTT  CTTTTT 
#14 1800563 chr1  45266875 45266878 CTTT  C      
#15 1800563 chr1  45266875 45266878 CTTT  CT     
#16 1800563 chr1  45266875 45266878 CTTT  CTT    
#17 1800563 chr1  45266875 45266878 CTTT  TTTT   
#18 1800563 chr1  45266875 45266878 CTTT  CTTTT  
#19 1800563 chr1  45266875 45266878 CTTT  CTTTTT 
Wimpel
  • 26,031
  • 1
  • 20
  • 37