Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert data frame row to column names

Is there a quick way (part of the tidyverse API perhaps) to turn a row into column names for a data.frame or tibble, somewhat similar to tibble::column_to_rownames?

I realize there are many ways to do this, e.g. somewhat clumsily:

> df <- head(iris)
> 
> df %>%
+     set_colnames(magrittr::extract(., 1,)) %>%
+     magrittr::extract(-1,)
  5.1 3.5 1.4 0.2      1
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
like image 487
saladi Avatar asked May 17 '17 17:05

saladi


People also ask

How do I turn a row into a column name?

Method 1: Using row. row.name() function is used to set and get the name of the DataFrame. Apply the row.name() function to the copy of the DataFrame and a name to the column which contains the name of the column with the help of the $ sign.

How do I turn a row into a column name in R?

Convert the row into column names by using colnames function and subsetting the data frame.

How do I convert a row to a column in a DataFrame?

The transpose() function is used to transpose index and columns. Reflect the DataFrame over its main diagonal by writing rows as columns and vice-versa.


2 Answers

janitor::row_to_names() implements this:

library(tidyverse)

iris %>%
  head() %>%
  janitor::row_to_names(1)
#>   5.1 3.5 1.4 0.2      1
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5.0 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa

Created on 2019-05-29 by the reprex package (v0.2.1)

like image 93
krlmlr Avatar answered Oct 17 '22 04:10

krlmlr


Well, you can simply: colnames(df) <- as.character(df[1, ])

And if you want to remove this first row: df <- df[-1,]

like image 38
cirofdo Avatar answered Oct 17 '22 04:10

cirofdo