stephen sefick
2010-Aug-03 11:41 UTC
[R] subset based on column names and then subset based on the inverse (grep?, or...)
I would like to be able to grab x and y columns out of a dataframe and then grab all of the columns that are not equal to x or y. I am sure that I am missing something easy. ftbr_UTM_downstream <- (structure(list(site c("Jennie_Creek_Main_Stem", "Wolf_Pit_Creek_Main_Stem", "Little_Rockfish_Main_Stem_North", "Big_Muddy_Creek_Main_Stem", "Flat_Creek_Main_Stem", "little_river_tributary", "Hector_Creek_Main_Stem", "Juniper_Creek_Main_Stem", "Field_Branch_Main_Stem", "Gum_Branch_Main_Stem" ), base = c("ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr"), creek = c("jcms", "wpms", "lrf1", "bmcm", "fcms", "lrtb", "hcms", "jpms", "fbms", "gbms"), date = c("06/20/2010", "06/20/2010", "06/18/2010", "06/18/2010", "06/21/2010", "06/22/2010", "06/22/2010", "06/21/2010", "06/19/2010", "06/19/2010"), elevation_m = c(101, 81, 59, 75, 73, 55, 55, 88, 77, 87), x = c(652159, 651646, 674147, 635466, 665726, 675295, 673098, 658917, 655613, 651748), y = c(3887647, 3886986, 3893724, 3876272, 3893886, 3895529, 3895076, 3882474, 3881587, 3884249), station = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), notes_ = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("site", "base", "creek", "date", "elevation_m", "x", "y", "station", "notes_"), row.names = c("1", "3", "5", "7", "9", "11", "13", "15", "17", "19"), class = "data.frame")) #this doesn't work, but I would like it to. I also tried grep to no avail colnames(ftbr_UTM_downstream)=="x" | "y" -- Stephen Sefick ____________________________________ | Auburn University? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? | | Department of Biological Sciences? ? ? ? ?? | | 331 Funchess Hall? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | | Auburn, Alabama? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? | | 36849? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | |___________________________________| | sas0025 at auburn.edu? ? ? ? ? ? ? ? ? ? ? ? ? ?? | | http://www.auburn.edu/~sas0025? ? ? ? ? ?? | |___________________________________| Let's not spend our time and resources thinking about things that are so little or so large that all they really do for us is puff us up and make us feel like gods.? We are mammals, and have not exhausted the annoying little problems of being mammals. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -K. Mullis
stephen sefick
2010-Aug-03 11:44 UTC
[R] subset based on column names and then subset based on the inverse (grep?, or...)
#this does it sorry for clogging everyones email boxes charmatch(c("x", "y"), colnames(ftbr_UTM_downstream)) On Tue, Aug 3, 2010 at 6:41 AM, stephen sefick <ssefick at gmail.com> wrote:> I would like to be able to grab x and y columns out of a dataframe and > then grab all of the columns that are not equal to x or y. ?I am sure > that I am missing something easy. > > > ftbr_UTM_downstream <- (structure(list(site > c("Jennie_Creek_Main_Stem", "Wolf_Pit_Creek_Main_Stem", > "Little_Rockfish_Main_Stem_North", "Big_Muddy_Creek_Main_Stem", > "Flat_Creek_Main_Stem", "little_river_tributary", "Hector_Creek_Main_Stem", > "Juniper_Creek_Main_Stem", "Field_Branch_Main_Stem", "Gum_Branch_Main_Stem" > ), base = c("ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr", > "ftbr", "ftbr", "ftbr"), creek = c("jcms", "wpms", "lrf1", "bmcm", > "fcms", "lrtb", "hcms", "jpms", "fbms", "gbms"), date = c("06/20/2010", > "06/20/2010", "06/18/2010", "06/18/2010", "06/21/2010", "06/22/2010", > "06/22/2010", "06/21/2010", "06/19/2010", "06/19/2010"), elevation_m = c(101, > 81, 59, 75, 73, 55, 55, 88, 77, 87), x = c(652159, 651646, 674147, > 635466, 665726, 675295, 673098, 658917, 655613, 651748), y = c(3887647, > 3886986, 3893724, 3876272, 3893886, 3895529, 3895076, 3882474, > 3881587, 3884249), station = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), > ? ?notes_ = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("site", > "base", "creek", "date", "elevation_m", "x", "y", "station", > "notes_"), row.names = c("1", "3", "5", "7", "9", "11", "13", > "15", "17", "19"), class = "data.frame")) > > #this doesn't work, but I would like it to. ?I also tried grep to no avail > > colnames(ftbr_UTM_downstream)=="x" | "y" > > > -- > Stephen Sefick > ____________________________________ > | Auburn University? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? | > | Department of Biological Sciences? ? ? ? ?? | > | 331 Funchess Hall? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | > | Auburn, Alabama? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? | > | 36849? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | > |___________________________________| > | sas0025 at auburn.edu? ? ? ? ? ? ? ? ? ? ? ? ? ?? | > | http://www.auburn.edu/~sas0025? ? ? ? ? ?? | > |___________________________________| > > Let's not spend our time and resources thinking about things that are > so little or so large that all they really do for us is puff us up and > make us feel like gods.? We are mammals, and have not exhausted the > annoying little problems of being mammals. > > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -K. Mullis >-- Stephen Sefick ____________________________________ | Auburn University? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? | | Department of Biological Sciences? ? ? ? ?? | | 331 Funchess Hall? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | | Auburn, Alabama? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? | | 36849? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | |___________________________________| | sas0025 at auburn.edu? ? ? ? ? ? ? ? ? ? ? ? ? ?? | | http://www.auburn.edu/~sas0025? ? ? ? ? ?? | |___________________________________| Let's not spend our time and resources thinking about things that are so little or so large that all they really do for us is puff us up and make us feel like gods.? We are mammals, and have not exhausted the annoying little problems of being mammals. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -K. Mullis
David Winsemius
2010-Aug-03 11:53 UTC
[R] subset based on column names and then subset based on the inverse (grep?, or...)
On Aug 3, 2010, at 7:41 AM, stephen sefick wrote:> I would like to be able to grab x and y columns out of a dataframe and > then grab all of the columns that are not equal to x or y. I am sure > that I am missing something easy. > > > ftbr_UTM_downstream <- (structure(list(site > c("Jennie_Creek_Main_Stem", "Wolf_Pit_Creek_Main_Stem", > "Little_Rockfish_Main_Stem_North", "Big_Muddy_Creek_Main_Stem", > "Flat_Creek_Main_Stem", "little_river_tributary", > "Hector_Creek_Main_Stem", > "Juniper_Creek_Main_Stem", "Field_Branch_Main_Stem", > "Gum_Branch_Main_Stem" > ), base = c("ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr", "ftbr", > "ftbr", "ftbr", "ftbr"), creek = c("jcms", "wpms", "lrf1", "bmcm", > "fcms", "lrtb", "hcms", "jpms", "fbms", "gbms"), date = > c("06/20/2010", > "06/20/2010", "06/18/2010", "06/18/2010", "06/21/2010", "06/22/2010", > "06/22/2010", "06/21/2010", "06/19/2010", "06/19/2010"), elevation_m > = c(101, > 81, 59, 75, 73, 55, 55, 88, 77, 87), x = c(652159, 651646, 674147, > 635466, 665726, 675295, 673098, 658917, 655613, 651748), y = > c(3887647, > 3886986, 3893724, 3876272, 3893886, 3895529, 3895076, 3882474, > 3881587, 3884249), station = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), > notes_ = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = > c("site", > "base", "creek", "date", "elevation_m", "x", "y", "station", > "notes_"), row.names = c("1", "3", "5", "7", "9", "11", "13", > "15", "17", "19"), class = "data.frame")) > > #this doesn't work, but I would like it to. I also tried grep to no > avail > > colnames(ftbr_UTM_downstream)=="x" | "y"That would not parse properly because the expression on the rhs of "|", namely "y", is not logical, but rather character.>Try instead: ftbr_UTM_downstream[ , grep("^x$|^y$", colnames(ftbr_UTM_downstream))] ftbr_UTM_downstream[ , -grep("^x$|^y$", colnames(ftbr_UTM_downstream))] or use the select argument to subset subset(ftbr_UTM_downstream, select = colnames(ftbr_UTM_downstream) %in % c("x", "y") ) ?"%in%" subset(ftbr_UTM_downstream, select = colnames(ftbr_UTM_downstream)[ !colnames(ftbr_UTM_downstream) %in% c("x", "y") ] )> > -- > Stephen Sefick > ____________________________________ > | Auburn University | > | Department of Biological Sciences | > | 331 Funchess Hall | > | Auburn, Alabama | > | 36849 | > |___________________________________| > | sas0025 at auburn.edu | > | http://www.auburn.edu/~sas0025 | > |___________________________________| > > Let's not spend our time and resources thinking about things that are > so little or so large that all they really do for us is puff us up and > make us feel like gods. We are mammals, and have not exhausted the > annoying little problems of being mammals. > > -K. Mullis > > ______________________________________________ > 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.David Winsemius, MD West Hartford, CT