0

I have a BD and I want to transpose the columns as variables inside a new column.

This is my BD.

ID <- c(123,456,789)
NAME <- c('MARY','JOHN','DANIEL')
PECU_05_2021 <- c(64.34,NA,20.59)
SECO_05_2021 <- c(32.17,NA,10.29)
SECJ_05_2021 <- c(NA,NA,20)

BD <- data_frame(ID,NAME,PECU_05_2021,SECO_05_2021,SECJ_05_2021)

I want my new BD to have two new columns: TYPE AND VALUE

ID <- c(123,123,123,456,456,456,789,789,789)
NAME <- c('MARY','MARY','MARY','JOHN','JOHN','JOHN','DANIEL','DANIEL','DANIEL')
TYPE <- c('PECU_05_2021','SECO_05_2021','SECJ_05_2021','PECU_05_2021','SECO_05_2021','SECJ_05_2021','PECU_05_2021','SECO_05_2021','SECJ_05_2021')
VALUE <- c(64.34,32.17,NA,NA,NA,NA,20.59,10.29,20)
BD2 <- data_frame(ID,NAME,TYPE,VALUE)

Is it possible to do this transposition including transforming the columns?

Bruno Avila
  • 296
  • 2
  • 10

1 Answers1

-1

Tidyverse solution (since you are using data_frame):

tidyr::pivot_longer(
  BD, 
  c(PECU_05_2021,SECO_05_2021,SECJ_05_2021), 
  names_to = "TYPE", 
  values_to="VALUE"
)
Robin Gertenbach
  • 10,316
  • 3
  • 25
  • 37