[R] Substitute value
PIKAL Petr
petr.pikal at precheza.cz
Fri Mar 8 16:03:25 CET 2013
Hi
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of chris201
> Sent: Friday, March 08, 2013 11:23 AM
> To: r-help at r-project.org
> Subject: [R] Substitute value
>
> Hi,
> I have a large data frame and within this there is one column which
> contains individual codes (eg. 1.1234.2a.2). I am splitting these
> codes into their 4 components using strsplit (eg. "1", "1234", "2a",
> "2"). However there are some individual codes which do not have a last
> component (eg. 2.4356.3b. ), I want to give these codes a "1" as their
> last component (eg. 2.4356.3b.1) but I can't get it to work.
>
> This is my example and attempt:
>
> sim.code<-
> c("1.1234.1a.1","1.1234.1a.2","1.3245.2c.5","4.6743.3c.","4.3254.6b.4",
> "3.5463.2a.")
> sim.val<-c(4,5,3,6,4,7)
> sim.df<-data.frame(sim.code,sim.val)
>
> sim.df$sim.code2<-sub(".$",".1",sim.df$sim.code)
> sim.df
>
> but this changes all the ends to ".1"
It is not perfect solution but
lll<-strsplit(sim.code, ".", fixed=T)
gives you a list of splitted data
index<-which(sapply(lll, length)==3)
gives you values of list with only 3 elements
after that some clever solution must exist but if the list is not big I would go further with for cycle
for(i in index) lll[[i]] <-c(lll[[i]], 1)
This put 1 in each empty slot of list lll. After that you cen either to put everything back by paste or do whatever you like.
Regards
Petr
>
> Thanks,
> Chris
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Substitute-
> value-tp4660699.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.
More information about the R-help
mailing list