Daniel Caro
2013-Sep-30 09:42 UTC
[R] change specific factor level values to NA in data frame
Dear R-users I am trying to replace specific factor level values in a data frame with NAs. The data frame includes different kind of variables (e.g, characters, numbers, and factors). I'd like to replace all 'Not applicable', 'Invalid', 'and Missing' for NA. For example: f.level <- c('Yes', 'No', 'Not applicable', 'Invalid', 'Missing') df <- data.frame(x1=runif(100), x2=sample(f.level, 100, replace=T), x3=sample(f.level, 100, replace=T)) I try changing the values by df[df %in% c('Not applicable', 'Invalid', 'Missing'), ] <- NA but nothing seems to change summary(df) My data frame has many more factors. Any advice? Thank you, Daniel
Rui Barradas
2013-Sep-30 16:52 UTC
[R] change specific factor level values to NA in data frame
Hello, A possibility is the following. icol <- sapply(df, is.factor) df[icol] <- lapply(df[icol], function(x){ x[as.character(x) %in% c('Not applicable', 'Invalid', 'Missing')] <- NA x}) Hope this helps, Rui Barradas Em 30-09-2013 10:42, Daniel Caro escreveu:> Dear R-users > > I am trying to replace specific factor level values in a data frame > with NAs. The data frame includes different kind of variables (e.g, > characters, numbers, and factors). I'd like to replace all 'Not > applicable', 'Invalid', 'and Missing' for NA. > > For example: > > f.level <- c('Yes', 'No', 'Not applicable', 'Invalid', 'Missing') > df <- data.frame(x1=runif(100), x2=sample(f.level, 100, replace=T), > x3=sample(f.level, 100, replace=T)) > > I try changing the values by > df[df %in% c('Not applicable', 'Invalid', 'Missing'), ] <- NA > > but nothing seems to change > summary(df) > > My data frame has many more factors. Any advice? > > Thank you, > Daniel > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >