I have a R dataframe that is structured like this :
indx <- as.factor(c('A01','A02','A03','B01','B02','B03'))
data <- runif(6,0,10)
valid <- rep(TRUE, 6)
df <- data.frame(indx, data, valid)
indx data valid
1 A01 6.534581 TRUE
2 A02 4.996695 TRUE
3 A03 3.328804 TRUE
4 B01 2.342048 TRUE
5 B02 9.928362 TRUE
6 B03 5.484037 TRUE
I also have a list of indx values when are not valid.
invalid_list <- as.factor(c('A02','B03'))
How can I change the value of valid to be FALSE if the indx exists in the invalid_list?
Result should look like this :
indx data valid
1 A01 6.534581 TRUE
2 A02 4.996695 FALSE
3 A03 3.328804 TRUE
4 B01 2.342048 TRUE
5 B02 9.928362 TRUE
6 B03 5.484037 FALSE
CodePudding user response:
We may use %in% and assign the matching ones to FALSE in 'valid'
df$valid[df$indx %in%invalid_list] <- FALSE
CodePudding user response:
A solution based on dplyr:
library(dplyr)
df %>%
mutate(valid = ifelse(indx %in% invalid_list, FALSE, valid))
