# Recode Variable

6 messages
Open this post in threaded view
|
Report Content as Inappropriate

## Recode Variable

 Hello everybody, I know this is pretty basic stuff, but could anyone explain me how to recode a single value of a variable into a missing value? I used to do it like this: myData[myData\$var1==5;"var1"]<-NA             # recode value "5" into "NA" But the column "var1" already contains NAs, which results in the following error message: "missing values are not allowed in subscripted assignments of data frames" Thank you very much for any advice! David         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate

## Re: Recode Variable

 Hi David, You bring up a good question.  I am not sure what is the "right" way to solve it.  But here is a simple solution I put together: x = c(1:10,5) y = x x[c(2,3)] <- NA # reproducing the problem: y[x==5] na2F <- function(x) {     x2 <- x     x2[is.na(x)] <- F     x2 } na2F(x==5) # "solved" y[na2F(x==5)] I'd be happy to see other solutions to it. With regards, Tal ----------------Contact Details:------------------------------------------------------- Contact me: [hidden email] |  972-52-7275845 Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) | www.r-statistics.com (English) ---------------------------------------------------------------------------------------------- On Thu, Apr 12, 2012 at 12:08 PM, David Studer <[hidden email]> wrote: > Hello everybody, > > I know this is pretty basic stuff, but could anyone explain me how to > recode a single value of a variable > into a missing value? > > I used to do it like this: > > myData[myData\$var1==5;"var1"]<-NA             # recode value "5" into "NA" > > But the column "var1" already contains NAs, which > results in the following error message: > > "missing values are not allowed in subscripted assignments of data frames" > > Thank you very much for any advice! > > David > >        [[alternative HTML version deleted]] > > ______________________________________________ > [hidden email] 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. >         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate

## Re: Recode Variable

 Le jeudi 12 avril 2012 à 12:29 +0300, Tal Galili a écrit : > Hi David, > You bring up a good question.  I am not sure what is the "right" way to > solve it.  But here is a simple solution I put together: > > x = c(1:10,5) > y = x > x[c(2,3)] <- NA > > # reproducing the problem: > y[x==5] > > na2F <- function(x) { >     x2 <- x >     x2[is.na(x)] <- F >     x2 > } > na2F(x==5) > > # "solved" > y[na2F(x==5)] > > > I'd be happy to see other solutions to it. You can simply use the built-in function which() for this, since it removes NAs, only returning the position of TRUE elements: which(c(NA, 1:10 == 5)) [1] 6 My two cents ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate

## Re: Recode Variable

 In reply to this post by David Studer Le jeudi 12 avril 2012 à 11:08 +0200, David Studer a écrit : > Hello everybody, > > I know this is pretty basic stuff, but could anyone explain me how to > recode a single value of a variable > into a missing value? > > I used to do it like this: > > myData[myData\$var1==5;"var1"]<-NA             # recode value "5" into "NA" > > But the column "var1" already contains NAs, which > results in the following error message: > > "missing values are not allowed in subscripted assignments of data frames" > > Thank you very much for any advice! You can just do this: myData <- data.frame(var1=1:10) myData\$var1[2]<-NA myData[myData\$var1 == 5, "var1"] <- NA # Fails myData\$var1[myData\$var1 == 5] <- NA # Works myData    var1 1     1 2    NA 3     3 4     4 5    NA 6     6 7     7 8     8 9     9 10   10 Regards ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate