Быстрое исправление заключается в том, что dcast
принимает функции, которые должны применяться внутри самой формулы.Итак, замените пробел на -
, используя sub
в 'Yearmon' в dcast
формуле
dcast(yy, type+name+code+Detail~tolower(sub(" \\d{2}", "-", Yearmon)),
value.var="emp")
Если мы хотим сделать заказ на основе 'Yearmon', можно преобразовать вyearmon
класс (as.yearmon
из zoo
) - добавлен воспроизводимый пример
library(zoo)
set.seed(24)
yy <- data.frame(name = rep(letters[1:4], each = 6),
emp = rnorm(24), Yearmon = paste(month.abb, 2018))
yy$Yearmon <- as.yearmon(yy$Yearmon)
out <- dcast(yy, name ~ Yearmon, value.var = 'emp')
nm1 <- grep("^[A-Za-z]{3} \\d{4}", names(out))
names(out)[nm1] <- tolower(sub(" \\d{2}", "-", names(out)[nm1]))
names(out)
#[1] "name" "jan-18" "feb-18" "mar-18" "apr-18" "may-18" "jun-18"
#[8] "jul-18" "aug-18" "sep-18" "oct-18" "nov-18" "dec-18"