Leonar Bode
Leonar Bode

Reputation: 31

convert columns to row and rows to columns in a data frame

Hello I would like to convert this data frame (dataInit) into this other (dataFinish), what I want is to convert the rows into columns

date <- c('2021-03-14','2021-03-15')
CONG_TCH <- c(5.7,3.5)
CONG_SDCCH <- c(2.3,4.6)
ACC <- c(4.5,10.2)
RET <- c(3.5,2.6)
SER <- c(19.5,56.2)
dataInit <- data.frame(date,CONG_TCH,CONG_SDCCH,ACC,RET,SER)

values <- c('CONG_TCH','CONG_SDCCH','ACC','RET','SER')
Day1 <- c(5.7,2.3,4.5,3.5,19.5)
Day2 <- c(3.5,4.6,10.2,2.6,56.2)
dataFinish <- data.frame(values,Day1 ,Day2)

names(dataFinish)[2]<- '2021-03-14'
names(dataFinish)[3]<- '2021-03-15'

Thanks for helping me is a task in R that I have

Upvotes: 0

Views: 100

Answers (1)

Ronak Shah
Ronak Shah

Reputation: 388797

Reshape the data twice :

library(tidyr)

dataInit %>%
  pivot_longer(cols = -date) %>%
  pivot_wider(names_from = date, values_from = value)

#   name       `2021-03-14` `2021-03-15`
#  <chr>             <dbl>        <dbl>
#1 CONG_TCH            5.7          3.5
#2 CONG_SDCCH          2.3          4.6
#3 ACC                 4.5         10.2
#4 RET                 3.5          2.6
#5 SER                19.5         56.2

Or with data.table :

library(data.table)
dcast(melt(setDT(dataInit),id.vars = 'date'), variable~date, value.var = 'value')

Upvotes: 1

Related Questions