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/