Example Data costs <- data.frame( Season=c("Spring","Summer","Autumn","Winter"), Rent = c(1000,1000, 1050, 1100), Lodger_1 = rep("Smith",4), Lodger_2 = rep("Taylor",4), Lodger_3 = c("Mark","Mark","Twain","Finn"), Lodger_4 = c("Twain","Twain","Mark","Sawyer"), Heating_1 = c(60, 10, 90, 150), Heating_2 = c(50, 0, 70, 120), Heating_3 = c(50, 0, 75, 120), Heating_4 = c(55, 0, 70, 160), Elevator_2 = c(20, 20, 20, 22), Elevator_3 = c(25, 25, 25, 28), Elevator_4 = c(30, 30, 30, 33), stringsAsFactors = FALSE ) knitr::kable(costs) Season Rent Lodger_1 Lodger_2 Lodger_3 Lodger_4 Heating_1 Heating_2 Heating_3 Heating_4 Elevator_2 Elevator_3 Elevator_4 Spring 1000 Smith Taylor Mark Twain 60 50 50 55 20 25 30 Summer 1000 Smith Taylor Mark Twain 10 0 0 0 20 25 30 Autumn 1050 Smith Taylor Twain Mark 90 70 75 70 20 25 30 Winter 1100 Smith Taylor Finn Sawyer 150 120 120 160 22 28 33 Tidying the data step by step library(tidyverse) ## -- Attaching packages ----------------------------------------------------------------------- tidyverse 1.