Skip to content
Related Articles

Related Articles

Improve Article

How to assign column names based on existing row in R DataFrame ?

  • Last Updated : 30 Apr, 2021
Geek Week

In this article, we will discuss how assign column names or headers to a DataFrame based on rows in R Programming Language.

Method 1 : Using as.character() method

unlist() method in R is used to simulate the conversion of a list to vector. It simplifies to produce a vector by preserving all components. Every element is the same as each of the values in that corresponding row. The as.character() method is then applied successively over this list, to deparse each of its elements individually. The as.character attempts to coerce its argument to the character type. The existing row is, therefore, assigned as a header of the data frame. The corresponding row can then be deleted or retained into the data frame. 

Syntax:

unlist(list)

Example:



R




# creating a data frame
data_frame = data.frame(col1=c(1,2,3,-4),
                        col2=c(8,9,5,10),
                        col3=c(0,2,3,5))
  
# printing original data frame
print("Original Data Frame")
print (data_frame)
  
# second row of the data frame is 
# assigned as the column name
colnames(data_frame) <- as.character(unlist(data_frame[2,]))
  
# second row is then deleted from 
# the data frame
data_frame = data_frame[-2, ]
  
print("Modified Data Frame")
print(data_frame)

Output

[1] "Original Data Frame"
 col1 col2 col3
1    1    8    0
2    2    9    2
3    3    5    3
4   -4   10    5
[1] "Modified Data Frame"
  2  9 2
1  1  8 0
3  3  5 3
4 -4 10 5

Method 2 : Using lapply() method

The lapply() function in R, returns a list of the same length as an input list object, each element of which is the result of the application of FUN to each of the corresponding elements of the list over which it is applied. 

Syntax: lapply(X, FUN, …)

Parameter : 

  • X – The data frame or matrix
  • FUN – Any function in R can be specified as the second argument where in both in-built and user defined functions can be used.

If we use as.character as the FUN, then the variables of the data frame, all the variables of the data frame will be converted to the class “character”. The header or colnames can then be assigned to a particular row of the data frame. 

Example

R




# creating a data frame
data_frame = data.frame(col1=c(1,-2,3,-4),
                        col2=c(8,9,5,10),
                        col3=c(0,2,3,5),
                        col4=c(1.5,4.5,6.7,8.9))
  
# printing original data frame
print("Original Data Frame")
print (data_frame)
  
# apply row4 as the header
data_frame[] <- lapply(data_frame, as.character)
colnames(data_frame) <- data_frame[4, ]
  
print("Modified Data Frame")
print(data_frame)

Output

[1] "Original Data Frame"
 col1 col2 col3 col4
1    1    8    0  1.5
2   -2    9    2  4.5
3    3    5    3  6.7
4   -4   10    5  8.9
[1] "Modified Data Frame"
 -4 10 5 8.9
1  1  8 0 1.5
2 -2  9 2 4.5
3  3  5 3 6.7
4 -4 10 5 8.9



My Personal Notes arrow_drop_up
Recommended Articles
Page :