Re: [R] Data management problem: convert text string to matrix of 0's and 1's

From: jim holtman <jholtman_at_gmail.com>
Date: Fri 27 Jan 2006 - 07:42:18 EST

Here is another way:

> x <- scan('/tempxx.txt', what='', sep='\n', blank.lines.skip=F)
Read 7 items
> x

[1] "icsrvepf" "fpevrsci" "ics" "p" "" "f" "ic"
> x <- strsplit(x, '') # break into single characters
> template <- c(i=0, c=0, s=0, r=0, v=0, e=0, p=0, f=0)
> mat <- lapply(x, function(.l){

+     .result <- template # initialize the result
+     .result[.l] <- 1
+     .result
+ })

> do.call('rbind', mat)
i c s r v e p f [1,] 1 1 1 1 1 1 1 1 [2,] 1 1 1 1 1 1 1 1 [3,] 1 1 1 0 0 0 0 0 [4,] 0 0 0 0 0 0 1 0 [5,] 0 0 0 0 0 0 0 0

[6,] 0 0 0 0 0 0 0 1
[7,] 1 1 0 0 0 0 0 0
>

On 1/26/06, Thomas Lumley <tlumley@u.washington.edu> wrote:
>
> On Thu, 26 Jan 2006, Dale Steele wrote:
> > The data looks like:
> > -->
> > icsrvepf
> > fpevrsci
> > ics
> > p
> >
> > f
> > ic
> > <--
> >
> > I would like to convert the about to a matrix of the form:
> >
> > i c s r v e p f
> > 1 1 1 1 1 1 1 1
> > 1 1 1 1 1 1 1 1
> > 1 1 1 0 0 0 0 0
> > 0 0 0 0 0 0 1 0
> > 0 0 0 0 0 0 0 0
> > 0 0 0 0 0 0 0 1
> > 1 1 0 0 0 0 0 0
> >
>
> One possibility is to use grep()
> > a
> [1] "icsrvepf" "fpevrsci" "p" "" "f" "ic"
> > grep("i",a)
> [1] 1 2 6
>
> so
> > results<-matrix(0,nrow=length(a),ncol=length(behaviours))
> > colnames(results)<-behaviours
> > for(b in behaviours) results[grep(b,a),b]<-1
> > results
> i c s r v e p f
> [1,] 1 1 1 1 1 1 1 1
> [2,] 1 1 1 1 1 1 1 1
> [3,] 0 0 0 0 0 0 1 0
> [4,] 0 0 0 0 0 0 0 0
> [5,] 0 0 0 0 0 0 0 1
> [6,] 1 1 0 0 0 0 0 0
> >
>
> -thomas
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>

--
Jim Holtman
Cincinnati, OH
+1 513 247 0281

What the problem you are trying to solve?

	[[alternative HTML version deleted]]

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Fri Jan 27 07:51:03 2006

This archive was generated by hypermail 2.1.8 : Fri 27 Jan 2006 - 14:11:39 EST