Minhas funções mais utilizadas em R

Há anos eu tenho um documento no meu Standard Notes só com as funções e snippets que eu mais uso em R, uma forma mais recorrente de copiar e colar coisas eficientes.

Compartilho abaixo:

Remove notação científica

options(scipen=999)

Calcula percentual de contagem em relação ao total (dplyr)

mutate(pct_total = round((n/sum(n))*100,1))

Calcula variação percentual em relação ao valor imediatamente anterior (dplyr)

mutate(var_mes = ((soma/lag(soma) - 1) * 100)) %>%

Conserta escala Y no ggplot (ggplot2)

scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE))

Ajusta escala X para datas no ggplot (ggplot2 + scales)

scale_x_date(breaks = scales::pretty_breaks(n = 10))
scale_x_date(date_breaks = "1 month", date_labels = "%b %Y")

Ajusta ângulo da legenda para data (ggplot2)

theme(axis.text.x=element_text(angle=60, hjust=1))

Deflaciona valores com o pacote deflateBR

Pacote por Fernando Meireles e Denisson Silva — https://github.com/meirelesff/deflateBR
d$valor_novo <- deflate(d$valor_velho, d$data, "mes/ano" [do ultimo indice], "ipca")

Carrega vários CSVs em um único arquivo (data.table)

library(data.table)
filenames <- list.files("C:/your/folder", pattern="*.csv", full.names=TRUE)
data <- rbindlist(lapply(filenames,fread))

Médias móveis (pacote pracma)

Documentação: https://www.rdocumentation.org/packages/pracma/versions/1.9.9/topics/movavg

Cria média móvel a cada X dias (PREFERENCIAL) — exponencial, com pracma

mutate(ma = movavg(_variavel_, 2, "e"))

Cria média móvel a cada X dias (ALTERNATIVO, com zoo)

library(zoo)
mutate(ma=rollmean(variavel,7 (DIAS),align='right',fill=NA))

Cria média móvel a cada X dias (ALTERNATIVO, com lag do dplyr)

mutate(lag1=lag(_variavel1_), lag2=lag(_variavel1_), med_movel=(lag1+lag2)/2)

Reordena colunas de gráfico de barras no ggplot (ggplot2)

aes(reorder(NOME,valor), valor)

Transforma data brasileira em data internacional (base R)

as.Date(d, "%d.%m.%Y")

Apenas mês e ano de data (base R)

format(as.Date(d), "%Y-%m")

Carrega vários CSVs de uma vez (plyr + readr)

library(plyr)
library(readr)
arquivos <- list.files(path="dados", pattern="*.csv", full.names=TRUE)
d <- ldply(arquivos, read_csv)

df <- readr::read_csv(arquivos, id = "file_name")