[R] Using data frames for EDA: Insert, Change name, delete columns? (Newcomer's question)
Earl F. Glynn
efg at stowers-institute.org
Tue Jun 28 17:08:55 CEST 2005
"Ben Fairbank" <BEN at SSANET.COM> wrote in message
news:CA612484A337C6479EA341DF9EEE14AC03AC1BB5 at hercules.ssainfo...
> I ... cannot find commands to easily insert,
> remove (delete), rename, and re-order (arbitrarily, not sort) columns.
...
> Could a reader provide a reference where such commands are
> documented?
There's a lot of info in the old R-Help postings, but searching and finding
an answer for a particular problem can be a bit of a pain.
Here's some info from some old R-Help postings that may help on your
question:
DELETE TWO COLUMNS
-------------------------------------------------------
I have a dataframe 'd2004' and I want to remove two columns:
'd2004$concentration' and 'd2004$stade".
I could do it just as follows:
> names(d2004)
[1] "Localite" "Date" "parcelle" "maille"
"presence.plant" "concentration" "stade.culture"
[8] "stade" "Trou" "Horizon" "Profondeur"
> d2004 <- d2004[, -c(6, 8)]
but I'd like to use column names (to avoid finding column numbers each
time).
I cannot find an easy way to operate...
I wonder why that works:
> d2004[, "concentration"]
and this don't:
> d2004 <- d2004[, -c("concentration", "stade")]
SOLUTIONS:
d2004$concentration <- NULL
d2004$stade <- NULL
or
Newdata <- subset(d2004, select=-c(concentration,stade))
RENAMING COLUMNS
-------------------------------------------------------
This is a sample data frame:
> myData <- data.frame( col1 = 1:3, col2 = 2:4, col3 = 3:5 )
> myData
col1 col2 col3
1 1 2 3
2 2 3 4
3 3 4 5
You can change all names by:
> names( myData )<- c( "newcol1", "newcol2", "newcol3" )
> myData
newcol1 newcol2 newcol3
1 1 2 3
2 2 3 4
3 3 4 5
Or a single name by:
> names( myData )[ 2 ] <- "newcol2"
> myData
col1 newcol2 col3
1 1 2 3
2 2 3 4
3 3 4 5
Or if you know the name, but not the column number:
> names( myData )[ which( names( myData ) == "newcol2" ) ] <- "verynewcol2"
> myData
col1 verynewcol2 col3
1 1 2 3
2 2 3 4
3 3 4 5
REORDERING COLUMNS
-------------------------------------------------------
I don't have a clipping for this one, but here's what I'd try:
> myData <- data.frame( col1 = 1:3, col2 = 2:4, col3 = 3:5 )
>
> myData
col1 col2 col3
1 1 2 3
2 2 3 4
3 3 4 5
> MyData <- myData[,c(3,1,2)]
> MyData
col3 col1 col2
1 3 1 2
2 4 2 3
3 5 3 4
--
efg
Earl F. Glynn
Bioinformatics
Stowers Institute for Medical Research
More information about the R-help
mailing list