Есть ли функция r для преобразования заголовков столбцов (например, январь 2018, февраль 2018 и т. Д.) «Январь 2018» в «январь-18» в R? - PullRequest
0 голосов
/ 05 июня 2019

Я хочу найти код для преобразования заголовков столбцов (январь 2018, февраль 2018, март 2018 и т. Д.) В январь-18, февраль-18 и т. Д. Для создания шаблона используется следующий код:

xx <- dcast(yy, type + name + code + Detail ~ Yearmon, value.var = "emp")

Я пробовал несколько способов конвертировать yearmon в формат "jan-18".

xx %>% mutate(levels = apply(expand.grid(month.abb, substr(1990:2019,3,4)), 1, paste, collapse="-"))

Ошибка: столбец levels должен иметь длину 772 (количество строк) или одну, а не 360

1 Ответ

1 голос
/ 05 июня 2019

Быстрое исправление заключается в том, что 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...