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