Hi, Try: ind <- which(mat==1,arr.ind=TRUE)[,2] dat1<- data.frame(Code=names(ind),ind=ind,stringsAsFactors=FALSE) row.names(dat1) <- 1:nrow(dat1) A.K.
On Wednesday, October 16, 2013 3:29 PM, Karl Fetter <karl.fet...@gmail.com> wrote: Hello, I have a matrix of samples (rows) and haplotypes (columns), where 0 indicates that a sample does not posses that columns haplotype and 1 indicates it does. So sample1 has 0's for every column, except the column that represents haplotype X, and it has a 1. I want a length(sample) x 2 dataframe that tells me which samples have what haplotype. I need some way of identifying for every row, where is the 1? And then print that information in a new column so I can see what row and which haplotype. Here is an example of what I mean: mat <- matrix(data = c(1,0,0,0,1,0,0,0,1), nrow = 3, byrow = T) rownames(mat) <- c("AL", "MS", "FL") > mat [,1] [,2] [,3] AL 1 0 0 MS 0 1 0 FL 0 0 1 How can I make a data frame like this: AL 1 MS 2 FL 3 Thanks for your ideas and time, Karl [[alternative HTML version deleted]] ______________________________________________ R-help@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. ______________________________________________ R-help@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.