Neste documento se enocntram feitos os exercícios do capitulo 6 do livro Utilizando a Linguagem R da professora Dra. Luciane Ferreira Alcoforada, com base nas soluções oferecidas no messmo livro.
library(readr)
dt <- read.csv2(file = "https://raw.githubusercontent.com/Lucianea/Alta/master/vendas.csv")
library(data.table)
dt <- as.data.table(dt)
[1] Obtehna a média e o desviopadrão da coluna valor_compra para cada fila.
dt[ , .(mean(valor_compra), sd(valor_compra)), by = filial]
## filial V1 V2
## 1: A 118.4600 96.66917
## 2: B 253.9683 248.72209
## 3: C 280.7700 281.20493
[2] Ordene as linhas em ordem crescente de n_itens, seguido de ordem decrescente de filial.
dt[order(n_itens, -filial)][1:10]
## cupom filial valor_compra n_itens desconto_perc quinzena
## 1: 301 C 12.25 1 0 1
## 2: 211 B 99.00 1 0 1
## 3: 105 A 120.99 1 2 2
## 4: 106 A 27.89 1 0 2
## 5: 209 B 500.00 2 12 1
## 6: 104 A 305.33 3 10 2
## 7: 101 A 100.22 5 2 1
## 8: 103 A 75.44 7 0 1
## 9: 303 C 117.60 8 2 2
## 10: 205 B 97.50 13 0 1
[3] Quantos cupons tiveram valor_compra acima de 30?
dt[ , sum(valor_compra > 30)]
## [1] 21
[4] Qual a venda média dos cupons da filial “A” que tiveram mais de cinco itens adquiridos e quantos cupons apresentaram essa condição?
dt[filial == "A" & n_itens > 5, .(media = mean(valor_compra), .N)]
## media N
## 1: 78.165 2
Dois cupons com mais de 5 itens adquiridos, e o valor médio das vendas desses cupons é de 78,165
[5] Quais são os dois cupons da filial “A” que apresentam mais de cinco itens adquiridos? Utilize o comndo .SD que fornece um subcunjunto dos dados que atendem as condições especificadas.
dt[filial == "A" & n_itens > 5, .SD]
## cupom filial valor_compra n_itens desconto_perc quinzena
## 1: 102 A 80.89 20 0 1
## 2: 103 A 75.44 7 0 1
[6] Obtenha o valor médio das compras em cada grupo formado pelo par de colunas filial e quinzena. Utilize a função lapply().
dt[ , lapply(.SD, mean), by = .(filial, quinzena), .SDcols = "valor_compra"]
## filial quinzena valor_compra
## 1: A 1 85.51667
## 2: A 2 151.40333
## 3: B 2 354.37167
## 4: B 1 153.56500
## 5: C 1 372.12500
## 6: C 2 219.86667
[7] Obtenha a venda média agrupada pela filial.
dt[ , lapply(.SD, mean), by = filial, .SDcols = "valor_compra"]
## filial valor_compra
## 1: A 118.4600
## 2: B 253.9683
## 3: C 280.7700
[8] Obtenha a média do valor_compra agrupada pelo desconto_perc, atendendo a condição de que desconto deve ser maior que dez.
dt[desconto_perc > 10, lapply(.SD, mean), by = desconto_perc, .SDcols = "valor_compra"]
## desconto_perc valor_compra
## 1: 12 577.6
## 2: 15 856.0
[9] Obtenha a média do desconto_perc agrupada pela filial, atendendo a condição de que filial deve ser igual a B.
dt[filial == "B", lapply(.SD, mean), by = filial, .SDcols = "desconto_perc"]
## filial desconto_perc
## 1: B 5.083333
[10] Crie um data.table de acordo com os comandos abaixo
dt1 <- data.table(
V1 = 1:10,
V2 = c(rep(5,6), rep(c(NA,1), 2)),
V3 = rep(c("S", "N"), 5),
V4 = c(1.1, 1.2, 1.1, 1.4, 1.5, 1.2, 1.3, 11.2, 1.4, 1.2),
V5 = rep(c(1, 8, NA), rep(c(2, 7, 1)))
)
[11] Modifique o nome da coluna um pra “cod”.
setnames(dt1, old = "V1", new = "cod")
dt1
## cod V2 V3 V4 V5
## 1: 1 5 S 1.1 1
## 2: 2 5 N 1.2 1
## 3: 3 5 S 1.1 8
## 4: 4 5 N 1.4 8
## 5: 5 5 S 1.5 8
## 6: 6 5 N 1.2 8
## 7: 7 NA S 1.3 8
## 8: 8 1 N 11.2 8
## 9: 9 NA S 1.4 8
## 10: 10 1 N 1.2 NA
[12] Obtenha a média da coluna V4 de acordo com os grupos da coluna V3.
doce <- dt1[ ,lapply(.SD, mean), by = V3, .SDcols = "V4"]
setnames(doce, old = "V4", new = "Médias V4")
doce
## V3 Médias V4
## 1: S 1.28
## 2: N 3.24
[13] Modifique o valor da linha oito, coluna quatro para o valor 1.1.
trece <- set(dt1, i = 8, j = 4, value = 1.1L)
trece
## cod V2 V3 V4 V5
## 1: 1 5 S 1.1 1
## 2: 2 5 N 1.2 1
## 3: 3 5 S 1.1 8
## 4: 4 5 N 1.4 8
## 5: 5 5 S 1.5 8
## 6: 6 5 N 1.2 8
## 7: 7 NA S 1.3 8
## 8: 8 1 N 1.1 8
## 9: 9 NA S 1.4 8
## 10: 10 1 N 1.2 NA
trece[8, 4]
## V4
## 1: 1.1
[14] Elimnine as linhas com valores faltantes.
cator <- na.omit(dt1, cols = 1:5)
cator
## cod V2 V3 V4 V5
## 1: 1 5 S 1.1 1
## 2: 2 5 N 1.2 1
## 3: 3 5 S 1.1 8
## 4: 4 5 N 1.4 8
## 5: 5 5 S 1.5 8
## 6: 6 5 N 1.2 8
## 7: 8 1 N 1.1 8
[15] Realize a contagem dos grupos em V3.
dt1[ ,.N, by = V3]
## V3 N
## 1: S 5
## 2: N 5
Link do livro: https://altabooks.com.br/produto/utilizando-a-linguagem-r/