Hi all, Iam trying to change character to numeric but have probelm mydata <- read.table(header=TRUE, text=', sep=" " id sex 1 NA 2 NA 3 M 4 F 5 M 6 F 7 F ') if sex is missing then sex=0; if sex is"M" then sex=1; if sex is"F" then sex=2; Any help please ? [[alternative HTML version deleted]]
Using numeric for missing sounds like asking for trouble. But if you must, something like mydata$confusingWillCauseProblemsLater <- ifelse( is.na(mydata$sex), 0, as.numeric(factor(mydata$sex, levels = c("M", "F")))) should do it. Best, Ista On Fri, Oct 30, 2015 at 9:15 PM, Val <valkremk at gmail.com> wrote:> Hi all, > Iam trying to change character to numeric but have probelm > > mydata <- read.table(header=TRUE, text=', sep=" " > id sex > 1 NA > 2 NA > 3 M > 4 F > 5 M > 6 F > 7 F > ') > > if sex is missing then sex=0; > if sex is"M" then sex=1; > if sex is"F" then sex=2; > > Any help please ? > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
I am trying to change the mydata$sex from character to numeric I want teh out put like id sex 1 NA 0 2 NA 0 3 M 1 4 F 2 5 M 1 6 F 2 7 F 2 mydata$sex1 <- 0 if(mydata$sex =="M " ){ mydata$sex1<-1 } else { mydata$sex1<-2 } mydata$sex1 Warning message:In if (mydata$sex == "M ") { : the condition has length > 1 and only the first element will be used> mydata$sex1[1] 2 2 2 2 2 2 2 2>On Fri, Oct 30, 2015 at 8:28 PM, Ista Zahn <istazahn at gmail.com> wrote:> Using numeric for missing sounds like asking for trouble. But if you > must, something like > > mydata$confusingWillCauseProblemsLater <- > ifelse( > is.na(mydata$sex), > 0, > as.numeric(factor(mydata$sex, > levels = c("M", "F")))) > > should do it. > > Best, > Ista > > On Fri, Oct 30, 2015 at 9:15 PM, Val <valkremk at gmail.com> wrote: > > Hi all, > > Iam trying to change character to numeric but have probelm > > > > mydata <- read.table(header=TRUE, text=', sep=" " > > id sex > > 1 NA > > 2 NA > > 3 M > > 4 F > > 5 M > > 6 F > > 7 F > > ') > > > > if sex is missing then sex=0; > > if sex is"M" then sex=1; > > if sex is"F" then sex=2; > > > > Any help please ? > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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]]
On 31/10/15 14:15, Val wrote:> Hi all, > Iam trying to change character to numeric but have probelm > > mydata <- read.table(header=TRUE, text=', sep=" " > id sex > 1 NA > 2 NA > 3 M > 4 F > 5 M > 6 F > 7 F > ') > > if sex is missing then sex=0; > if sex is"M" then sex=1; > if sex is"F" then sex=2; > > Any help please ?sex <- c(NA,NA,"M","F","M","F","F") # 1. match(sex,c(NA,"M","F"))-1 # 2. as.numeric(factor(sex,exclude=NULL,levels=c(NA,"M","F")))-1 cheers, Rolf Turner P. S. As others have told you, converting character to numeric is highly ill-advised. R. T. -- Technical Editor ANZJS Department of Statistics University of Auckland Phone: +64-9-373-7599 ext. 88276