Tribo Laboy
2008-Feb-07 06:44 UTC
[R] How to split a factor (unique identifier) into several others?
Hello, I have a data frame with a factor column, which uniquely identifies the observations in the data frame and it looks like this: sample1_condition1_place1 sample2_condition1_place1 sample3_condition1_place1 . . . sample3_condition3_place3 I want to turn it into three separate factor columns "sample", "condition" and "place". This is what I did so far: # generate a factor column for the example fctr<- factor(c("sample1_condition1_place1", "sample2_condition1_place1", "sample3_condition1_place1")) splitfctr <- strsplit(as.character(fctr),"_")> splitfctr[[1]] [1] "sample1" "condition1" "place1" [[2]] [1] "sample2" "condition1" "place1" [[3]] [1] "sample3" "condition1" "place1" Now this is all fine, but how do I make three separate factors of this? The object "splitfctr" is a list of character vectors, each character vector being composed of the words after spitting the long original world. Now I want to form new character vectors, which contain the first component of each list entry, then another vector for the second component, etc. I don't want to use loops, unless that's the only way to do it.I guess I have some difficulty with understanding how R indexing works...
Dimitris Rizopoulos
2008-Feb-07 08:20 UTC
[R] How to split a factor (unique identifier) into several others?
hits=-2.5 tests=BAYES_00,FORGED_RCVD_HELO X-USF-Spam-Flag: NO try the following: dat <- data.frame(x = c("sample1_condition1_place1", "sample2_condition1_place1", "sample3_condition1_place1", "sample1_condition2_place1", "sample1_condition2_place1")) vals <- strsplit(as.character(dat$x), "_") as.data.frame(do.call("rbind", vals)) I hope it helps. Best, Dimitris ---- Dimitris Rizopoulos Ph.D. Student Biostatistical Centre School of Public Health Catholic University of Leuven Address: Kapucijnenvoer 35, Leuven, Belgium Tel: +32/(0)16/336899 Fax: +32/(0)16/337015 Web: http://med.kuleuven.be/biostat/ http://www.student.kuleuven.be/~m0390867/dimitris.htm ----- Original Message ----- From: "Tribo Laboy" <tribolaboy at gmail.com> To: <r-help at r-project.org> Sent: Thursday, February 07, 2008 7:44 AM Subject: [R] How to split a factor (unique identifier) into several others?> Hello, > > I have a data frame with a factor column, which uniquely identifies > the observations in the data frame and it looks like this: > > sample1_condition1_place1 > sample2_condition1_place1 > sample3_condition1_place1 > . > . > . > sample3_condition3_place3 > > I want to turn it into three separate factor columns "sample", > "condition" and "place". > > This is what I did so far: > > # generate a factor column for the example > fctr<- factor(c("sample1_condition1_place1", > "sample2_condition1_place1", "sample3_condition1_place1")) > splitfctr <- strsplit(as.character(fctr),"_") > >> splitfctr > [[1]] > [1] "sample1" "condition1" "place1" > > [[2]] > [1] "sample2" "condition1" "place1" > > [[3]] > [1] "sample3" "condition1" "place1" > > > Now this is all fine, but how do I make three separate factors of > this? > The object "splitfctr" is a list of character vectors, each > character > vector being composed of the words after spitting the long original > world. > Now I want to form new character vectors, which contain the first > component of each list entry, then another vector for the second > component, etc. > I don't want to use loops, unless that's the only way to do it.I > guess > I have some difficulty with understanding how R indexing works... > > ______________________________________________ > 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. >Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm