Мы можем создать функцию со столбцами для выбора (cols_select
) в качестве символьного вектора, names_to_change
('Valor' или любое другое имя столбца), подмножество набора данных ('dat') путем select
, используя столбцы, задайте имя столбца и создайте новый столбец «ANIO»
f1 <- function(dat, cols_select, names_to_change){
yearcol <- grep("^X\\d{4}$", cols_select, value = TRUE)
tmpdat <- subset(dat,select=cols_select)
names(tmpdat)[names(tmpdat) == yearcol] <- names_to_change
tmpdat$ANIO <- as.integer(sub("^X", "", yearcol))
tmpdat
}
и используйте его в lapply
nm1 <- paste0("X", 1980:1982)
out <- do.call(rbind, lapply(nm1, function(x)
f1(dat, cols_select = c("Pais","RubroId", x), "Valor")))