Hi, With a data such as:> z = data.frame(a = 1:5, b=10*a, c = c("a", "a", "b", "b", "b") )* a b c* *1* 10 *a* *2* 20 *a* 3 *30* *b* 4 *40* *b* 5 *50* *b* Can anyone suggest a way to select [1, 2, 30, 40, 50], ie. using column "c" to specify which column is selected for each row. Many thanks G [[alternative HTML version deleted]]
Hello, Here's an idea: ifelse(z$c == "a", z$a, z$b)> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] > On Behalf Of Gurpal Kalsi > Sent: Wednesday, October 28, 2009 11:15 AM > To: r-help at r-project.org > Subject: [R] Selecting rows according to a column > > Hi, > > With a data such as: > > z = data.frame(a = 1:5, b=10*a, c = c("a", "a", "b", "b", "b") ) > * a b c* > *1* 10 *a* > *2* 20 *a* > 3 *30* *b* > 4 *40* *b* > 5 *50* *b* > > Can anyone suggest a way to select [1, 2, 30, 40, 50], > ie. using column "c" to specify which column is selected for each row. > > Many thanks > > G > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.
Not very elegant but try: z <- data.frame(a = 1:5, b=10*(1:5), c = c("a", "a", "b", "b", "b") ) z[ cbind( 1:nrow(z), match( as.character(z$c) , colnames(z) ) ) ] If you have very few columns, you can use ifelse() too. Regards, Adai Gurpal Kalsi wrote:> Hi, > > With a data such as: >> z = data.frame(a = 1:5, b=10*a, c = c("a", "a", "b", "b", "b") ) > * a b c* > *1* 10 *a* > *2* 20 *a* > 3 *30* *b* > 4 *40* *b* > 5 *50* *b* > > Can anyone suggest a way to select [1, 2, 30, 40, 50], > ie. using column "c" to specify which column is selected for each row. > > Many thanks > > G > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.
Reasonably Related Threads
- filling columns in frame according to another column frame
- selecting rows with more than x occurrences in a given column (data type is names)
- Help needed for efficient way to loop through rows and columns
- How to concatenate a several rows according with a column ?
- Binning question (binning rows of a data.frame according to a variable)