how to address last and all but last column in dataframe
Hi Felix,
My problem is now, that I analyse data.frames with an unknown count of columns. So to get rid of the first and last column for the "pred" variable and to select the last column for the "ref" variable, ...
Doubtless there are other routes. Generally I use ?length to get the number of columns. Then do your arithmetic within the indexing operator ?"[" to select what you want. ## Dummy ex. to select first and last column of any data frame ( = DF ) DF[ , c(1, length( names( DF ) ) ) ] ## Dummy ex. to select first and penultimate column of any data frame DF[ , c(1, length( names( DF ) ) -1 ) ] HTH, Mark.
drflxms wrote:
Dear R-colleagues, another question from a newbie: I am creating a lot of simple pivot-charts from my raw data using the reshape-package. In these charts we have medical doctors judging videos in the columns and the videos they judge in the rows. Simple example of chart/data.frame "input" with two categories 1/0: video 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 9 9 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 I recently learned, that I can easily create a confusion matrix out of this data using the following commands: pairs<-data.frame(pred=factor(unlist(input[2:21])),ref=factor(input[,22])) pred<-pairs$pred ref <- pairs$ref library (caret) confusionMatrix(pred, ref, positive=1) - where column 21 is the reference/goldstandard. My problem is now, that I analyse data.frames with an unknown count of columns. So to get rid of the first and last column for the "pred" variable and to select the last column for the "ref" variable, I have to look at the data.frame before doing the above commands to set the proper column numbers. It would be very comfortable, if I could address the last column not by number (where I have to count beforehand) but by a variable "last column". Probably there is a more easy solution for this problem using the names of the columns as well: the reference is always number "21" the first column is always called "video". So I tried: attach(input) pairs<-data.frame(pred=factor(unlist(input[[,-c(video,21)]])),ref=factor(input[[21]])) which does not work unfortunately :-(. I'd be very happy in case someone could help me out, cause I am really tired of counting - there are a lot of tables to analyse... Cheers and greetings from Munich, Felix
______________________________________________ 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.
View this message in context: http://www.nabble.com/how-to-address-last-and-all-but-last-column-in-dataframe-tp19349974p19350456.html Sent from the R help mailing list archive at Nabble.com.