I am struggling with some data wrangling in R. I have a wide data frame that contains values of 10 IDs, a number and five columns specifying if a test is positive, negative, or inconclusive.
df <- data.frame(ID = 1:10, number = rep(1:5, each=2),
`1`= c(rep(c("pos", "neg"),3), rep("neg", 4)),
`2`= c(NA, NA, rep("pos", 4), "neg", "neg", "pos", "neg"),
`3`= c(rep(NA, 4), rep("pos", 4), "neg", "inconcl"),
`4`= c(rep(NA, 6), rep("pos",3), "neg"),
`5`=c(rep(NA, 8), "pos", "pos"), stringsAsFactors = FALSE)
df
#> ID number X1 X2 X3 X4 X5
#> 1 1 1 pos <NA> <NA> <NA> <NA>
#> 2 2 1 neg <NA> <NA> <NA> <NA>
#> 3 3 2 pos pos <NA> <NA> <NA>
#> 4 4 2 neg pos <NA> <NA> <NA>
#> 5 5 3 pos pos pos <NA> <NA>
#> 6 6 3 neg pos pos <NA> <NA>
#> 7 7 4 neg neg pos pos <NA>
#> 8 8 4 neg neg pos pos <NA>
#> 9 9 5 neg pos neg pos pos
#> 10 10 5 neg neg inconcl neg pos
Per row, I would like to set all values after a positive pos or inconclusive inconcl value in the columns X1-X5 to NA.
Expected output
#> ID number X1 X2 X3 X4 X5
#> 1 1 1 pos <NA> <NA> NA NA
#> 2 2 1 neg <NA> <NA> NA NA
#> 3 3 2 pos <NA> <NA> NA NA
#> 4 4 2 neg pos <NA> NA NA
#> 5 5 3 pos <NA> <NA> NA NA
#> 6 6 3 neg pos <NA> NA NA
#> 7 7 4 neg neg pos NA NA
#> 8 8 4 neg neg pos NA NA
#> 9 9 5 neg pos <NA> NA NA
#> 10 10 5 neg neg inconcl NA NA
Question
How do you do this with dplyr in R?