Вот один вариант с tidyverse
. Мы gather
столбцы 'Nov (PM) to 'Dec(TM)
в "длинном" формате, затем с помощью extract
, разделить столбец "ключ" на "Месяц" и другой столбец, и, наконец, spread
его в "широкий" 'формат
df1 %>%
gather(key, val, `Nov(PM)`:`Dec(TM)`) %>%
extract(key, into = c('Month', 'key'), '^([^)]+)\\(([^)]+).*') %>%
spread(key, val)
# ID Com Lac Month PM TM
#1 1 A E Dec 28 29
#2 1 A E Nov 12 11
#3 2 B F Dec 26 44
#4 2 B F Nov 2 13
#5 3 C G Dec 18 37
#6 3 C G Nov 7 15
#7 4 D H Dec 22 22
#8 4 D H Nov 4 10
данные
df1 <- structure(list(ID = 1:4, Com = c("A", "B", "C", "D"), Lac = c("E",
"F", "G", "H"), `Nov(PM)` = c(12L, 2L, 7L, 4L), `Nov(TM)` = c(11L,
13L, 15L, 10L), `Dec(PM)` = c(28L, 26L, 18L, 22L), `Dec(TM)` = c(29L,
44L, 37L, 22L)), class = "data.frame", row.names = c(NA, -4L))