Simple problem but I don't see the answer. I'm trying to clean up some data I have 120 columns in a data.frame. I have one value in a column named "blaw" that I want to change. How do I find the coordinates. I can find the row by doing a subset on the data.frame but how do I find out here "blaw " is in columns without manually counting them or converting names(Df) to a list and reading down the list. Simple example cat <- c( 3,5,6,8,0) dog <- c(3,5,3,6, 0) rat <- c (5, 5, 4, 9, 0) bat <- c( 12, 42, 45, 32, 54) Df <- data.frame(cbind(cat, dog, rat, bat)) Df subset(Df, bat >= 50) ----results cat dog rat bat 5 0 0 0 54 Thus I know that my target is in row 5 but how do I figure out where 'bat' is? All I want to do is be able to say Df[5,4] <- 100 Is there some way to have function(bat) return the column number: some kind of a colnum() function? I had thought that I had found somthing in library(gdata) matchcols but no luck.
?which> which(Df >= 50, arr.ind=T)row col 5 5 4 On 8/2/06, John Kane <jrkrideau@yahoo.ca> wrote:> > Simple problem but I don't see the answer. I'm trying > to clean up some data > I have 120 columns in a data.frame. I have one value > in a column named "blaw" that I want to change. How do > I find the coordinates. I can find the row by doing a > subset on the data.frame but how do I find out here > "blaw " is in columns without manually counting them > or converting names(Df) to a list and reading down the > list. > > Simple example > > cat <- c( 3,5,6,8,0) > dog <- c(3,5,3,6, 0) > rat <- c (5, 5, 4, 9, 0) > bat <- c( 12, 42, 45, 32, 54) > > Df <- data.frame(cbind(cat, dog, rat, bat)) > Df > subset(Df, bat >= 50) > > ----results > cat dog rat bat > 5 0 0 0 54 > > > Thus I know that my target is in row 5 but how do I > figure out where 'bat' is? > > All I want to do is be able to say > Df[5,4] <- 100 > > Is there some way to have function(bat) return the > column number: some kind of a colnum() function? I > had thought that I had found somthing in > library(gdata) matchcols but no luck. > > ______________________________________________ > R-help@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 > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve? [[alternative HTML version deleted]]
Chuck Cleland
2006-Aug-02 21:12 UTC
[R] Finding the position of a variable in a data.frame
John Kane wrote:> Simple problem but I don't see the answer. I'm trying > to clean up some data > I have 120 columns in a data.frame. I have one value > in a column named "blaw" that I want to change. How do > I find the coordinates. I can find the row by doing a > subset on the data.frame but how do I find out here > "blaw " is in columns without manually counting them > or converting names(Df) to a list and reading down the > list. > > Simple example > > cat <- c( 3,5,6,8,0) > dog <- c(3,5,3,6, 0) > rat <- c (5, 5, 4, 9, 0) > bat <- c( 12, 42, 45, 32, 54) > > Df <- data.frame(cbind(cat, dog, rat, bat)) > Df > subset(Df, bat >= 50) > > ----results > cat dog rat bat > 5 0 0 0 54 > > > Thus I know that my target is in row 5 but how do I > figure out where 'bat' is?grep("bat", names(Df))> All I want to do is be able to say > Df[5,4] <- 100Why not do it this way? Df$bat <- replace(Df$bat, Df$bat >=50, 100)> Is there some way to have function(bat) return the > column number: some kind of a colnum() function? I > had thought that I had found somthing in > library(gdata) matchcols but no luck. > > ______________________________________________ > 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 > and provide commented, minimal, self-contained, reproducible code.-- Chuck Cleland, Ph.D. NDRI, Inc. 71 West 23rd Street, 8th floor New York, NY 10010 tel: (212) 845-4495 (Tu, Th) tel: (732) 512-0171 (M, W, F) fax: (917) 438-0894
roger koenker
2006-Aug-02 21:12 UTC
[R] Finding the position of a variable in a data.frame
it is the well-known wicked which problem: if you had (grammatically incorrectly) thought "... which I want to change" then you might have been led to type (in another window): ?which and you would have seen the light. Maybe that() should be an alias for which()? url: www.econ.uiuc.edu/~roger Roger Koenker email rkoenker at uiuc.edu Department of Economics vox: 217-333-4558 University of Illinois fax: 217-244-6678 Champaign, IL 61820 On Aug 2, 2006, at 4:01 PM, John Kane wrote:> Simple problem but I don't see the answer. I'm trying > to clean up some data > I have 120 columns in a data.frame. I have one value > in a column named "blaw" that I want to change. How do > I find the coordinates. I can find the row by doing a > subset on the data.frame but how do I find out here > "blaw " is in columns without manually counting them > or converting names(Df) to a list and reading down the > list. > > Simple example > > cat <- c( 3,5,6,8,0) > dog <- c(3,5,3,6, 0) > rat <- c (5, 5, 4, 9, 0) > bat <- c( 12, 42, 45, 32, 54) > > Df <- data.frame(cbind(cat, dog, rat, bat)) > Df > subset(Df, bat >= 50) > > ----results > cat dog rat bat > 5 0 0 0 54 > > > Thus I know that my target is in row 5 but how do I > figure out where 'bat' is? > > All I want to do is be able to say > Df[5,4] <- 100 > > Is there some way to have function(bat) return the > column number: some kind of a colnum() function? I > had thought that I had found somthing in > library(gdata) matchcols but no luck. > > ______________________________________________ > 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 > and provide commented, minimal, self-contained, reproducible code.
Gerald Jansen
2006-Aug-02 22:53 UTC
[R] Finding the position of a variable in a data.frame
On Wed, 02 Aug 2006 17:12:53 -0400, Chuck Cleland wrote:> Why not do it this way? > > Df$bat <- replace(Df$bat, Df$bat >=50, 100)Is that any different, performancewise, than the following? Df$bat[Df$bat >= 50] <- 100 Gerald Jansen ... John Kane wrote:> Simple example > > cat <- c( 3,5,6,8,0) > dog <- c(3,5,3,6, 0) > rat <- c (5, 5, 4, 9, 0) > bat <- c( 12, 42, 45, 32, 54) > > Df <- data.frame(cbind(cat, dog, rat, bat))...
You don't need to find out the column index. This works: Df[5,'bat'] <- 100 -Don At 5:01 PM -0400 8/2/06, John Kane wrote:>Simple problem but I don't see the answer. I'm trying >to clean up some data >I have 120 columns in a data.frame. I have one value >in a column named "blaw" that I want to change. How do >I find the coordinates. I can find the row by doing a >subset on the data.frame but how do I find out here >"blaw " is in columns without manually counting them >or converting names(Df) to a list and reading down the >list. > >Simple example > >cat <- c( 3,5,6,8,0) >dog <- c(3,5,3,6, 0) >rat <- c (5, 5, 4, 9, 0) >bat <- c( 12, 42, 45, 32, 54) > >Df <- data.frame(cbind(cat, dog, rat, bat)) >Df >subset(Df, bat >= 50) > >----results > cat dog rat bat >5 0 0 0 54 > > >Thus I know that my target is in row 5 but how do I >figure out where 'bat' is? > >All I want to do is be able to say >Df[5,4] <- 100 > >Is there some way to have function(bat) return the >column number: some kind of a colnum() function? I >had thought that I had found somthing in >library(gdata) matchcols but no luck. > >______________________________________________ >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 >and provide commented, minimal, self-contained, reproducible code.-- -------------------------------------- Don MacQueen Environmental Protection Department Lawrence Livermore National Laboratory Livermore, CA, USA