You are nearly there. ____ example(data.frame) zz <- c("aa_bb","bb_cc","cc_dd","dd_ee","ee_ff", "ff_gg","gg_hh","ii_jj","jj_kk","kk_ll") ddd <- cbind(dd, group = zz)
ddd <- within(ddd, { group <- as.character(group) tmp <- do.call(rbind, strsplit(group, "_")) group_b <- tmp[,2] group_a <- tmp[,1] rm(tmp, group) }) ____ > ddd x y fac char group_a group_b 1 1 1 B a aa bb 2 1 2 B b bb cc 3 1 3 A c cc dd 4 1 4 A d dd ee 5 1 5 A e ee ff 6 1 6 C f ff gg 7 1 7 A g gg hh 8 1 8 B h ii jj 9 1 9 C i jj kk 10 1 10 B j kk ll -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Daisy Englert Duursma Sent: Tuesday, 26 October 2010 1:57 PM To: r-help@r-project.org Subject: [R] divide column in a dataframe based on a character Hello, If I have a dataframe: example(data.frame) zz<-c("aa_bb","bb_cc","cc_dd","dd_ee","ee_ff","ff_gg","gg_hh","ii_jj","jj_kk","kk_ll") ddd <- cbind(dd, group = zz) and I want to divide the column named group by the "_", how would I do this? so instead of the first row being x y fac char group 1 1 C a aa_bb it should be: x y fac char group_a group_b 1 1 C a aa bb I know for a vector I can: x1 <- c("a_b","b_c","c_d") do.call("rbind",strsplit(x1, "_")) but I am not sure how this relates to my data.frame Thanks, Daisy -- Daisy Englert Duursma Room E8C156 Dept. Biological Sciences Macquarie University NSW 2109 Australia ______________________________________________ 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.