[R] replacing NA's with 0 in a dataframe for specified columns
Gabor Grothendieck
ggrothendieck at myway.com
Wed Sep 15 22:20:41 CEST 2004
The col funtion can be helpful here. We want to satisfy two conditions:
1. the element is an NA
2. the element lies in one of the specified columns
The first two lines below calculate logical vectors for these two,
respectively, and the last line assigns 0 to those elements.
isna <- is.na(x)
iscol <- col(isna) %in% c(1,3)
x[isna & iscol] <- 0
To specify the columns by name rather than number first
calculate their column numbers and then proceed as before.
That is, replace the second line by:
cols <- match(c("a", "c"), colnames(x))
iscol <- col(isna) %in% cols
David Kane <dave <at> kanecap.com> writes:
:
: I know that there must be a cool way of doing this, but I can't think
: of it. Let's say I have an dataframe with NA's.
:
: > x <- data.frame(a = c(0,1,2,NA), b = c(0,NA,1,2), c = c(NA, 0, 1, 2))
: > x
: a b c
: 1 0 0 NA
: 2 1 NA 0
: 3 2 1 1
: 4 NA 2 2
: >
:
: I know it is easy to replace all the NA's with zeroes.
:
: > x[is.na(x)] <- 0
: > x
: a b c
: 1 0 0 0
: 2 1 0 0
: 3 2 1 1
: 4 0 2 2
: >
:
: But how do I do this for just columns a and c, leaving the NA in
: column b alone?
:
: Thanks,
:
: Dave Kane
:
: > R.version
: _
: platform i686-pc-linux-gnu
: arch i686
: os linux-gnu
: system i686, linux-gnu
: status
: major 1
: minor 9.1
: year 2004
: month 06
: day 21
: language R
: >
:
: ______________________________________________
: R-help <at> stat.math.ethz.ch mailing list
: https://stat.ethz.ch/mailman/listinfo/r-help
: PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
:
:
More information about the R-help
mailing list