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

Martin Lam tmlammail at yahoo.com
Fri Jan 27 09:58:44 CET 2006


Hi Dale,

Unfortunately, you didn't say in what for format your
data is saved into, so I presume it's saved as a list
of strings. Perhaps there is a faster/better way, but
this should suffice if your datasize isn't enormous.

data = list()
data[1] = "icsrvepf"
data[2] = "fpevrsci"
data[3] = "ics"
data[4] = "p"
data[5] = ""
data[6] = "f"
data[7] = "ic"

names = as.character(c("i", "c", "s", "r", "v", "e",
"p", "f"))

mymatrix = matrix(0, nrow = 7, ncol = 8)
colnames(mymatrix) = names

for (i in 1:length(data)) {
  # split the string into separate characters
  chars = strsplit(data[[i]], split="")[[1]]

  mymatrix[i,which(names %in%chars)] = 1
}
mymatrix

HTH,

Martin Lam

--- Dale Steele <Dale_Steele at brown.EDU> wrote:

> I have a data management problem which exceeds my
> meager R programming 
> skills and would greatly appreciate suggestions on
> how to proceed?  The 
> data consists of a series of observation periods.
> Specific behaviors are 
> recorded for each time period in the order each is
> observed.  Their are 
> 8 possible behaviors, coded as "i" "c" "s" "r" "v"
> "e" "p" "f".
> 
> 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
> 
> Thanks.
> 
> Dale
> 
> Dale Steele, MD
> Pediatric Emergency Medicine
> Brown Medical School
> 
> ______________________________________________
> R-help at 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
>




More information about the R-help mailing list