Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to rename a single column in a data.frame?

Tags:

r

I know if I have a data frame with more than 1 column, then I can use

colnames(x) <- c("col1","col2") 

to rename the columns. How to do this if it's just one column? Meaning a vector or data frame with only one column.

Example:

trSamp <- data.frame(sample(trainer$index, 10000)) head(trSamp ) #   sample.trainer.index..10000. # 1                      5907862 # 2                      2181266 # 3                      7368504 # 4                      1949790 # 5                      3475174 # 6                      6062879  ncol(trSamp) # [1] 1 class(trSamp) # [1] "data.frame" class(trSamp[1]) # [1] "data.frame" class(trSamp[,1]) # [1] "numeric" colnames(trSamp)[2] <- "newname2" # Error in names(x) <- value :  #   'names' attribute [2] must be the same length as the vector [1] 
like image 456
screechOwl Avatar asked Sep 23 '11 16:09

screechOwl


People also ask

How do I change the name of a single column in R?

Method 1: using colnames() method colnames() method in R is used to rename and replace the column names of the data frame in R. The columns of the data frame can be renamed by specifying the new column names as a vector.

How do you change the name of a column in a dataset?

To rename columns, we can pass a dictionary to the columns argument. The keys are the columns you want to change and the values are the new names for these columns. We can also set the argument inplace to True for the change to happen in the existing DataFrame.


2 Answers

This is a generalized way in which you do not have to remember the exact location of the variable:

# df = dataframe # old.var.name = The name you don't like anymore # new.var.name = The name you want to get  names(df)[names(df) == 'old.var.name'] <- 'new.var.name' 

This code pretty much does the following:

  1. names(df) looks into all the names in the df
  2. [names(df) == old.var.name] extracts the variable name you want to check
  3. <- 'new.var.name' assigns the new variable name.
like image 141
Side_0o_Effect Avatar answered Oct 27 '22 08:10

Side_0o_Effect


colnames(trSamp)[2] <- "newname2" 

attempts to set the second column's name. Your object only has one column, so the command throws an error. This should be sufficient:

colnames(trSamp) <- "newname2" 
like image 31
Joshua Ulrich Avatar answered Oct 27 '22 09:10

Joshua Ulrich