Quantcast
Channel: Active questions tagged r - Stack Overflow
Viewing all articles
Browse latest Browse all 211994

How do I filter rows depending on values in semi-colon separated columns?

$
0
0

I have a table that looks like this:

> dt
                   variant_id           transcript_id         0       1     2
    1: chr17_45630589_C_A_b38 chr17_46031704_46032046   1584;41  891;27 146;5
    2: chr17_45630589_C_A_b38 chr17_46032300_46033079    782;41  438;27  76;5
    3: chr17_45630589_C_A_b38 chr17_46033193_46033402    988;41  620;27 116;5
    4: chr17_45630589_C_A_b38 chr17_46033461_46034160   1162;41  725;27 133;5
    5: chr17_45630589_C_A_b38 chr17_46033470_46034160      0;41    0;27   0;5
   ---
37392:  chr9_34699703_G_C_b38  chr9_34648457_34648761 24060;256 2644;36  <NA>
37393:  chr9_34699703_G_C_b38  chr9_34648895_34648997 35276;256 3512;36  <NA>
37394:  chr9_34699703_G_C_b38  chr9_34648908_34648997   336;256   60;36  <NA>
37395:  chr9_34699703_G_C_b38  chr9_34649082_34649409 33640;256 3400;36  <NA>
37396:  chr9_34699703_G_C_b38  chr9_34649565_34650368 45540;256 4708;36  <NA>

I want to only extract the rows where the first semi-colon separated value under 0 equals 0 and the first semicolon-separated value in 1 and 2 is greater than 0, preferably where 2 is greater than 1. I've attempted to do this myself but it has resulted in a new column with values other than 0:

> test
                   variant_id           transcript_id         0       1     2
    1: chr17_45630589_C_A_b38 chr17_46031704_46032046   1584;41  891;27 146;5
    2: chr17_45630589_C_A_b38 chr17_46032300_46033079    782;41  438;27  76;5
    3: chr17_45630589_C_A_b38 chr17_46033193_46033402    988;41  620;27 116;5
    4: chr17_45630589_C_A_b38 chr17_46033461_46034160   1162;41  725;27 133;5
    5: chr17_45630589_C_A_b38 chr17_46033470_46034160      0;41    0;27   0;5
   ---
37392:  chr9_34699703_G_C_b38  chr9_34648457_34648761 24060;256 2644;36  <NA>
37393:  chr9_34699703_G_C_b38  chr9_34648895_34648997 35276;256 3512;36  <NA>
37394:  chr9_34699703_G_C_b38  chr9_34648908_34648997   336;256   60;36  <NA>
37395:  chr9_34699703_G_C_b38  chr9_34649082_34649409 33640;256 3400;36  <NA>
37396:  chr9_34699703_G_C_b38  chr9_34649565_34650368 45540;256 4708;36  <NA>
       0_new   1_new 2_new
    1:     0  891,27 146,5
    2:     0  438,27  76,5
    3:     0  620,27 116,5
    4:     0  725,27 133,5
    5:     1    0,27   0,5
   ---
37392:     0 2644,36    NA
37393:     0 3512,36    NA
37394:     0   60,36    NA
37395:     0 3400,36    NA
37396:     0 4708,36    NA

It also very flatly doesn't work the way I want it to. How do I go about doing this?

Edit:

> dput(head(as.data.frame(dt)))
structure(list(variant_id = c("chr17_45630589_C_A_b38", "chr17_45630589_C_A_b38",
"chr17_45630589_C_A_b38", "chr17_45630589_C_A_b38", "chr17_45630589_C_A_b38",
"chr17_45630589_C_A_b38"), transcript_id = c("chr17_46031704_46032046",
"chr17_46032300_46033079", "chr17_46033193_46033402", "chr17_46033461_46034160",
"chr17_46033470_46034160", "chr17_46034280_46038537"), `0` = c("1584;41",
"782;41", "988;41", "1162;41", "0;41", "5;41"), `1` = c("891;27",
"438;27", "620;27", "725;27", "0;27", "4;27"), `2` = c("146;5",
"76;5", "116;5", "133;5", "0;5", "0;5")), row.names = c(NA, 6L
), class = "data.frame")

Viewing all articles
Browse latest Browse all 211994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>