Hello,
I have two variables (of different length and from two different data
frames):
code<- c("101001", "1032", "102",
"101001", "102", "1032");
name<- c("101001 Alta", "102 Bassa", "1032
Media");
and I would like to substitute the first variable with the second variable
according to their shared numerical part, thus obtaining the following
result:
code.new
"101001 Alta" "1032 Media" "102
Bassa""101001 Alta" "102 Bassa" "1032
Media"
I tried using: <- sapply(code, gsub, pattern="\\d+",
replacement=name) but
the replacement cannot be of length more than one, thus my output is only
"101001 Alta" "101001 Alta"... I am not sure how to get the
right answer...
Thank you!
--
View this message in context:
http://r.789695.n4.nabble.com/match-and-substitute-two-variables-tp4651893.html
Sent from the R help mailing list archive at Nabble.com.
Hello,
Try the following.
for(nm in name){
code[grep(gsub("[ [:alpha:]]+", "", nm), code)] <-
nm
}
code
Hope this helps,
Rui Barradas
Em 03-12-2012 15:32, irene escreveu:> Hello,
> I have two variables (of different length and from two different data
> frames):
>
> code<- c("101001", "1032", "102",
"101001", "102", "1032");
> name<- c("101001 Alta", "102 Bassa", "1032
Media");
>
> and I would like to substitute the first variable with the second variable
> according to their shared numerical part, thus obtaining the following
> result:
>
> code.new
> "101001 Alta" "1032 Media" "102
Bassa""101001 Alta" "102 Bassa" "1032
> Media"
>
> I tried using: <- sapply(code, gsub, pattern="\\d+",
replacement=name) but
> the replacement cannot be of length more than one, thus my output is only
> "101001 Alta" "101001 Alta"... I am not sure how to get
the right answer...
>
> Thank you!
>
>
>
> --
> View this message in context:
http://r.789695.n4.nabble.com/match-and-substitute-two-variables-tp4651893.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.
Hi,
try this:
?paste(code,gsub("\\d+","",name)[match(code,gsub("\\D+","",name))],sep="
")
#[1] "101001? Alta" "1032? Media"? "102? Bassa"??
"101001? Alta" "102? Bassa"?
#[6] "1032? Media"
A.K.
----- Original Message -----
From: irene <ireneruberto at yahoo.it>
To: r-help at r-project.org
Cc:
Sent: Monday, December 3, 2012 10:32 AM
Subject: [R] match and substitute two variables
Hello,
I have two variables (of different length and from two different data
frames):
code<- c("101001",? "1032", "102",
"101001", "102", "1032");
name<- c("101001 Alta", "102 Bassa", "1032
Media");
and I would like to substitute the first variable with the? second variable
according to their shared numerical part, thus obtaining the following
result:
code.new
"101001 Alta"? "1032 Media" "102
Bassa""101001 Alta" "102 Bassa" "1032
Media"
I tried using: <- sapply(code, gsub, pattern="\\d+",
replacement=name) but
the replacement cannot be of length more than one, thus my output is only
"101001 Alta" "101001 Alta"... I am not sure how to get the
right answer...
Thank you!
--
View this message in context:
http://r.789695.n4.nabble.com/match-and-substitute-two-variables-tp4651893.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
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.