[R] how to address last and all but last column in dataframe

Mark Difford mark_difford at yahoo.co.uk
Sat Sep 6 21:50:45 CEST 2008


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.



More information about the R-help mailing list