Visão Geral
É um livro gostoso de ler, traz casos de uso com um problema, uma solução sucinta, uma discussão da solução. Faz isso para todos os temas abordados no livro. É o primeiro livro que li sobre o tema. Sendo iniciante na linguagem, achei a didática e os exemplos muito úteis.
Abaixo seguem minhas anotações pessoais do livro, com alguns códigos e dicas apontados pelos autores.
Título: R Cookbook: Proven Recipes for Data Analysis, Statistics, and Graphics
Editora: O’Reilly
Autores: Jd Long; Paul Teetor
Comprar este livro
Anotações do livro
Para verificar as variáveis na memória, podemos usar o
# lista variáveis e seus conteúdos
ls.str()
# lista somente nomes das variáveis
ls(all.names = TRUE)
Nunca, jamais devemos compartilhar o nosso código contendo a instrução de remover todas as variáveis. É um aviso bem contundente dos autores.
# remove todas as variáveis carregadas na memória
rm(list=ls())
Mesmo que útil para nossos scripts, especialmente quando estamos limpando os dados, nunca compartilhe o código acima dentro do seu script.
Medidas de estatísticas
mean(x)
median(x)
sd(x)
var(x)
cor(x, y)
cov(x, y)
x <- c(0, 1, 1, 2, 3, NA)
# calcula a média do vetor x, excluindo valores NA
sd(x, na.rm = TRUE)
[1] 1.140175
Retorna TRUE caso qualquer valor seja o da comparação
v <- c(3, pi, 4)
any(v == pi)
[1] TRUE
Mostra/altera o diretório onde o RStudio inicia
Sys.getenv("R_HOME")
Mostra somente os 4 primeiros dígitos de pi
print(pi, digits = 4)
[1] 3.142
Salva a saída para um arquivo de texto
cat("A resposta é...", resposta, "\n", file = "filename.txt")
Salva todas as saídas para um arquivo
sink("log.txt")
# quando quisermos parar digitamos
sink()
lista todos os arquivos do diretório atual
list.files(recursive = T)
ler tabelas html
library(rvest)
library(tidyverse)
all_tables < read_html("url") %>% html_table(fill = TRUE, header = TRUE)
Carregando séries temporais a partir de um html
world.series <- scan( "http://lib.stat.cmu.edu/datasets/wseries", skip = 35, nlines = 23, what = list(year = integer(0), pattern = character(0)), )
Read 90 records
operações com listas
nomeando elementos de uma lista
lst <- list(mid = 0.5, right = 0.841, far.right = 0.977)
lst
$mid
[1] 0.5
$right
[1] 0.841
$far.right
[1] 0.977
removendo valores nulos
lst %>% discard(is.na)
concatenando dados
rbind(df, newRow)
cbind(df, newCol)
todas as linhas de diversos dataframes:
full_join(df1, df2, by = "col")
todas as linhas de df1, e somente as que forem iguais em df2
left_join: left_join(df1, df2, by = "col")
todas as linhas de df2, e somente as que forem iguais em df1
right_join: right_join(df1, df2, by = "col")
todas as linhas de que forem iguais em ambos os dfs
inner_join(df1, df2, by = "col")
Para mais informações,ver a documentação
?dplyr::join
Criando nova coluna com base em condições
df %>% mutate( case_when(my_field == "something" ~ "result", my_field != "something else" ~ "other result", TRUE ~ "all other results") )
df %>% mutate(new_vals = case_when(vals <= 2 ~ "2 or less", vals > 2 & vals <= 4 ~ "2 to 4", TRUE ~ "over 4"))
Tem alguma sugestão para que eu possa aprender mais? Sou autoditada e estou aprendendo programação. Alguns gostam de futebol, eu de programar.
Espero que estas anotações ajudem muitas pessoas.
Sucesso a tod@s!
LS0tDQp0aXRsZTogIlJlc2VuaGEgZG8gbGl2cm8gfCBSIENvb2tib29rOiBQcm92ZW4gUmVjaXBlcyBmb3IgRGF0YSBBbmFseXNpcywgU3RhdGlzdGljcywgYW5kIEdyYXBoaWNzIg0KYXV0aG9yOiAnSm9uYXMgQ2FtcG9zJw0KZGF0ZTogMzAvMDMvMjAyMQ0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KKioqKioqKioqKioqKioqDQojIyBWaXPDo28gR2VyYWwNCg0Kw4kgdW0gbGl2cm8gKipnb3N0b3NvIGRlIGxlcioqLCB0cmF6IGNhc29zIGRlIHVzbyBjb20gdW0gcHJvYmxlbWEsIHVtYSBzb2x1w6fDo28gc3VjaW50YSwgdW1hIGRpc2N1c3PDo28gZGEgc29sdcOnw6NvLiBGYXogaXNzbyBwYXJhIHRvZG9zIG9zIHRlbWFzIGFib3JkYWRvcyBubyBsaXZyby4gDQrDiSBvIHByaW1laXJvIGxpdnJvIHF1ZSBsaSBzb2JyZSBvIHRlbWEuIFNlbmRvIGluaWNpYW50ZSBuYSBsaW5ndWFnZW0sIGFjaGVpIGEgKipkaWTDoXRpY2EgZSBvcyBleGVtcGxvcyBtdWl0byDDunRlaXMqKi4NCg0KQWJhaXhvIHNlZ3VlbSBtaW5oYXMgYW5vdGHDp8O1ZXMgcGVzc29haXMgZG8gbGl2cm8sIGNvbSBhbGd1bnMgY8OzZGlnb3MgZSBkaWNhcyBhcG9udGFkb3MgcGVsb3MgYXV0b3Jlcy4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tDQoNCipUw610dWxvOiogUiBDb29rYm9vazogUHJvdmVuIFJlY2lwZXMgZm9yIERhdGEgQW5hbHlzaXMsIFN0YXRpc3RpY3MsIGFuZCBHcmFwaGljcw0KDQoqRWRpdG9yYToqIE8nUmVpbGx5DQoNCipBdXRvcmVzOiogIEpkIExvbmc7IFBhdWwgVGVldG9yDQoNCltDb21wcmFyIGVzdGUgbGl2cm9dKGh0dHBzOi8vYW16bi50by8zOXU4bXVsKQ0KDQohW0NhcGEgZG8gbGl2cm9dKGNvdmVyX3NtYWxsLmpwZykNCg0KLS0tLS0tLS0tLS0tLS0tDQoNCiMjIEFub3Rhw6fDtWVzIGRvIGxpdnJvDQoNClBhcmEgdmVyaWZpY2FyIGFzIHZhcmnDoXZlaXMgbmEgbWVtw7NyaWEsIHBvZGVtb3MgdXNhciBvDQoNCmBgYA0KIyBsaXN0YSB2YXJpw6F2ZWlzIGUgc2V1cyBjb250ZcO6ZG9zDQpscy5zdHIoKSANCiMgbGlzdGEgc29tZW50ZSBub21lcyBkYXMgdmFyacOhdmVpcw0KbHMoYWxsLm5hbWVzID0gVFJVRSkgDQpgYGANCioqTnVuY2EqKiwgKipqYW1haXMqKiBkZXZlbW9zIGNvbXBhcnRpbGhhciBvIG5vc3NvIGPDs2RpZ28gY29udGVuZG8gYSBpbnN0cnXDp8OjbyBkZSByZW1vdmVyIHRvZGFzIGFzIHZhcmnDoXZlaXMuIMOJIHVtIGF2aXNvIGJlbSBjb250dW5kZW50ZSBkb3MgYXV0b3Jlcy4NCg0KYGBgDQojIHJlbW92ZSB0b2RhcyBhcyB2YXJpw6F2ZWlzIGNhcnJlZ2FkYXMgbmEgbWVtw7NyaWENCnJtKGxpc3Q9bHMoKSkNCmBgYA0KTWVzbW8gcXVlIMO6dGlsIHBhcmEgbm9zc29zIHNjcmlwdHMsIGVzcGVjaWFsbWVudGUgcXVhbmRvIGVzdGFtb3MgbGltcGFuZG8gb3MgZGFkb3MsICoqbnVuY2EqKiBjb21wYXJ0aWxoZSBvIGPDs2RpZ28gYWNpbWEgZGVudHJvIGRvIHNldSBzY3JpcHQuDQoNCiMjIyBNZWRpZGFzIGRlIGVzdGF0w61zdGljYXMNCg0KYGBgDQptZWFuKHgpIA0KbWVkaWFuKHgpIA0Kc2QoeCkgDQp2YXIoeCkgDQpjb3IoeCwgeSkgDQpjb3YoeCwgeSkNCmBgYA0KDQpgYGB7cn0NCnggPC0gYygwLCAxLCAxLCAyLCAzLCBOQSkNCiMgY2FsY3VsYSBhIG3DqWRpYSBkbyB2ZXRvciB4LCBleGNsdWluZG8gdmFsb3JlcyBOQQ0Kc2QoeCwgbmEucm0gPSBUUlVFKQ0KYGBgDQoNClJldG9ybmEgVFJVRSBjYXNvIHF1YWxxdWVyIHZhbG9yIHNlamEgbyBkYSBjb21wYXJhw6fDo28NCmBgYHtyfQ0KdiA8LSBjKDMsIHBpLCA0KQ0KYW55KHYgPT0gcGkpIA0KDQpgYGANCg0KKipNb3N0cmEvYWx0ZXJhIG8gZGlyZXTDs3JpbyBvbmRlIG8gUlN0dWRpbyBpbmljaWEqKg0KYGBgDQpTeXMuZ2V0ZW52KCJSX0hPTUUiKSANCmBgYA0KTW9zdHJhIHNvbWVudGUgb3MgNCBwcmltZWlyb3MgZMOtZ2l0b3MgZGUgcGkNCmBgYHtyfQ0KcHJpbnQocGksIGRpZ2l0cyA9IDQpDQpgYGANCg0KU2FsdmEgYSBzYcOtZGEgcGFyYSB1bSBhcnF1aXZvIGRlIHRleHRvDQoNCmBgYA0KY2F0KCJBIHJlc3Bvc3RhIMOpLi4uIiwgcmVzcG9zdGEsICJcbiIsIGZpbGUgPSAiZmlsZW5hbWUudHh0IikNCmBgYA0KDQpTYWx2YSB0b2RhcyBhcyBzYcOtZGFzIHBhcmEgdW0gYXJxdWl2bw0KDQpgYGANCnNpbmsoImxvZy50eHQiKQ0KIyBxdWFuZG8gcXVpc2VybW9zIHBhcmFyIGRpZ2l0YW1vcw0Kc2luaygpDQpgYGANCg0KKipsaXN0YSB0b2RvcyBvcyBhcnF1aXZvcyBkbyBkaXJldMOzcmlvIGF0dWFsKioNCmBgYA0KbGlzdC5maWxlcyhyZWN1cnNpdmUgPSBUKQ0KYGBgDQoNCiMjIyBsZXIgdGFiZWxhcyBodG1sDQoNCmBgYA0KbGlicmFyeShydmVzdCkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KDQphbGxfdGFibGVzIDwgcmVhZF9odG1sKCJ1cmwiKSAlPiUgaHRtbF90YWJsZShmaWxsID0gVFJVRSwgaGVhZGVyID0gVFJVRSkNCmBgYA0KQ2FycmVnYW5kbyBzw6lyaWVzIHRlbXBvcmFpcyBhIHBhcnRpciBkZSB1bSBodG1sDQoNCmBgYHtyfQ0Kd29ybGQuc2VyaWVzIDwtIHNjYW4oICJodHRwOi8vbGliLnN0YXQuY211LmVkdS9kYXRhc2V0cy93c2VyaWVzIiwgc2tpcCA9IDM1LCBubGluZXMgPSAyMywgd2hhdCA9IGxpc3QoeWVhciA9IGludGVnZXIoMCksIHBhdHRlcm4gPSBjaGFyYWN0ZXIoMCkpLCApDQpgYGANCiMjIyBvcGVyYcOnw7VlcyBjb20gbGlzdGFzDQoNCioqbm9tZWFuZG8gZWxlbWVudG9zIGRlIHVtYSBsaXN0YSoqDQoNCmBgYHtyfQ0KbHN0IDwtIGxpc3QobWlkID0gMC41LCByaWdodCA9IDAuODQxLCBmYXIucmlnaHQgPSAwLjk3NykNCmxzdA0KYGBgDQoqKnJlbW92ZW5kbyB2YWxvcmVzIG51bG9zKioNCmBgYA0KbHN0ICU+JSBkaXNjYXJkKGlzLm5hKQ0KYGBgDQoqKmNvbmNhdGVuYW5kbyBkYWRvcyoqDQoNCmBgYA0KcmJpbmQoZGYsIG5ld1JvdykNCmNiaW5kKGRmLCBuZXdDb2wpDQpgYGANCg0KKnRvZGFzIGFzIGxpbmhhcyBkZSBkaXZlcnNvcyBkYXRhZnJhbWVzOioNCmBgYA0KZnVsbF9qb2luKGRmMSwgZGYyLCBieSA9ICJjb2wiKSANCmBgYA0KKnRvZGFzIGFzIGxpbmhhcyBkZSBkZjEsIGUgc29tZW50ZSBhcyBxdWUgZm9yZW0gaWd1YWlzIGVtIGRmMioNCmBgYA0KbGVmdF9qb2luOiBsZWZ0X2pvaW4oZGYxLCBkZjIsIGJ5ID0gImNvbCIpDQpgYGANCip0b2RhcyBhcyBsaW5oYXMgZGUgZGYyLCBlIHNvbWVudGUgYXMgcXVlIGZvcmVtIGlndWFpcyBlbSBkZjEqDQpgYGANCnJpZ2h0X2pvaW46IHJpZ2h0X2pvaW4oZGYxLCBkZjIsIGJ5ID0gImNvbCIpDQpgYGANCip0b2RhcyBhcyBsaW5oYXMgZGUgcXVlIGZvcmVtIGlndWFpcyBlbSBhbWJvcyBvcyBkZnMqDQpgYGANCmlubmVyX2pvaW4oZGYxLCBkZjIsIGJ5ID0gImNvbCIpDQpgYGANClBhcmEgbWFpcyBpbmZvcm1hw6fDtWVzLHZlciBhIGRvY3VtZW50YcOnw6NvDQpgYGANCj9kcGx5cjo6am9pbg0KYGBgDQpDcmlhbmRvIG5vdmEgY29sdW5hIGNvbSBiYXNlIGVtIGNvbmRpw6fDtWVzDQpgYGANCmRmICU+JSBtdXRhdGUoIGNhc2Vfd2hlbihteV9maWVsZCA9PSAic29tZXRoaW5nIiB+ICJyZXN1bHQiLCBteV9maWVsZCAhPSAic29tZXRoaW5nIGVsc2UiIH4gIm90aGVyIHJlc3VsdCIsIFRSVUUgfiAiYWxsIG90aGVyIHJlc3VsdHMiKSApDQpgYGANCg0KYGBgDQpkZiAlPiUgbXV0YXRlKG5ld192YWxzID0gY2FzZV93aGVuKHZhbHMgPD0gMiB+ICIyIG9yIGxlc3MiLCB2YWxzID4gMiAmIHZhbHMgPD0gNCB+ICIyIHRvIDQiLCBUUlVFIH4gIm92ZXIgNCIpKQ0KYGBgDQpUZW0gYWxndW1hIHN1Z2VzdMOjbyBwYXJhIHF1ZSBldSBwb3NzYSBhcHJlbmRlciBtYWlzPyBTb3UgYXV0b2RpdGFkYSBlIGVzdG91IGFwcmVuZGVuZG8gcHJvZ3JhbWHDp8Ojby4gQWxndW5zIGdvc3RhbSBkZSBmdXRlYm9sLCBldSBkZSBwcm9ncmFtYXIuDQoNCkVzcGVybyBxdWUgZXN0YXMgYW5vdGHDp8O1ZXMgYWp1ZGVtIG11aXRhcyBwZXNzb2FzLg0KDQpTdWNlc3NvIGEgdG9kQHMhDQoNCiMjIyBFbmNvbnRyZS1tZQ0KDQo8cCBhbGlnbj0nY2VudGVyJz4NCiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2pvbmFzYWFjYW1wb3MvIj48aW1nIGhlaWdodD0iMzAiIHNyYz0iaHR0cHM6Ly9pbWFnZS5mbGF0aWNvbi5jb20vaWNvbnMvc3ZnLzcyNS83MjUzMzcuc3ZnIj48L2E+DQogJm5ic3A7Jm5ic3A7DQogICA8YSBocmVmPSJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL2dhcm90b2RlYmVybGltLyI+PGltZyBoZWlnaHQ9IjMwIiBzcmM9Imh0dHBzOi8vaW1hZ2UuZmxhdGljb24uY29tL2ljb25zL3N2Zy8xMDE0LzEwMTQ2NTAuc3ZnIj48L2E+DQogICZuYnNwOyZuYnNwOw0KICA8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vam9uYXNhYWNhbXBvcyI+PGltZyBoZWlnaHQ9IjMwIiBzcmM9Imh0dHBzOi8vaW1hZ2UuZmxhdGljb24uY29tL2ljb25zL3N2Zy8xMzgzLzEzODMyNTkuc3ZnIj48L2E+DQo8L3A+DQoNCjxoci8+DQo=