Tipos de variables en R

Vectores

vector_1 <- c(1,2,3,4,5,6,7,8,9)
vector_1
## [1] 1 2 3 4 5 6 7 8 9

Matrices

Mi_matriz <- matrix(data = vector_1, ncol = 3, byrow = FALSE)
Mi_matriz
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

Ponerle nombre a las columnas

colnames(Mi_matriz) <- c("Altura","Peso","Talla")
rownames(Mi_matriz) <- c("Juan","Pedro","Mario")
Mi_matriz
##       Altura Peso Talla
## Juan       1    4     7
## Pedro      2    5     8
## Mario      3    6     9

Importar datos de un archivo csv

library(readr)
datos_groceries <- read_csv("datos_groceries.csv")
## Rows: 43367 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): item
## dbl (1): id_compra
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# datos_groceries <- read_csv("https://ricardorpalma.github.io/R-Dataset/datos_groceries.csv")

Creamos nuestro vector de datos para el analisis de tickets. Estos datos podriamos traerlo de un archivo, ponerlos en una linea de comando de r o traerlos desde la web

datos_crudo <- c(1,1,1,2,2,3,3,"5W40","Filtro Aceite","Filtro Aire","Correa Distr","Bomba de Agua","Filtro Nafta","Limpia Inyectores")
datos_crudo
##  [1] "1"                 "1"                 "1"                
##  [4] "2"                 "2"                 "3"                
##  [7] "3"                 "5W40"              "Filtro Aceite"    
## [10] "Filtro Aire"       "Correa Distr"      "Bomba de Agua"    
## [13] "Filtro Nafta"      "Limpia Inyectores"

Vamos a transformar nuestros datos crudos en una matriz

lista_corta <- matrix(datos_crudo,ncol=2, byrow=FALSE)
lista_corta
##      [,1] [,2]               
## [1,] "1"  "5W40"             
## [2,] "1"  "Filtro Aceite"    
## [3,] "1"  "Filtro Aire"      
## [4,] "2"  "Correa Distr"     
## [5,] "2"  "Bomba de Agua"    
## [6,] "3"  "Filtro Nafta"     
## [7,] "3"  "Limpia Inyectores"

Ahora le colocamos nombre a las columnas

dimnames(lista_corta) <- list(salida = c(1,2,3,4,5,6,7) , producto = c("ticket","producto") )
lista_corta
##       producto
## salida ticket producto           
##      1 "1"    "5W40"             
##      2 "1"    "Filtro Aceite"    
##      3 "1"    "Filtro Aire"      
##      4 "2"    "Correa Distr"     
##      5 "2"    "Bomba de Agua"    
##      6 "3"    "Filtro Nafta"     
##      7 "3"    "Limpia Inyectores"

Datos en forma de lista larga

datos_m <- c(1,1,1,0,0,0,0, 0,0,0,1,1,0,0, 0,0,0,0,0,1,1)
datos_m
##  [1] 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1

Ahora lo transformamos en una matriz

lista_larga <- matrix(datos_m,nrow=3,byrow=TRUE)
lista_larga
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,]    1    1    1    0    0    0    0
## [2,]    0    0    0    1    1    0    0
## [3,]    0    0    0    0    0    1    1

Colocamos nombres a las filas y columnas

dimnames(lista_larga) <- list(ticket = c(1,2,3) , producto = c("5W40","Filtro Aceite","Filtro Aire","Correa Distr","Bomba de Agua","Filtro Nafta","Limpia Inyectores"))
lista_larga
##       producto
## ticket 5W40 Filtro Aceite Filtro Aire Correa Distr Bomba de Agua Filtro Nafta
##      1    1             1           1            0             0            0
##      2    0             0           0            1             1            0
##      3    0             0           0            0             0            1
##       producto
## ticket Limpia Inyectores
##      1                 0
##      2                 0
##      3                 1

Recordemos antes de utilizar cualquier paquete de r que se invoca con el comando library, el paquete debe ser instalado

library(arules)
## Loading required package: Matrix
## 
## Attaching package: 'arules'
## The following objects are masked from 'package:base':
## 
##     abbreviate, write
apriori(lista_larga)
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.8    0.1    1 none FALSE            TRUE       5     0.1      1
##  maxlen target  ext
##      10  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 0 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[7 item(s), 3 transaction(s)] done [0.00s].
## sorting and recoding items ... [7 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 done [0.00s].
## writing ... [13 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].
## set of 13 rules
transacciones_1 <- apriori(lista_larga)
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.8    0.1    1 none FALSE            TRUE       5     0.1      1
##  maxlen target  ext
##      10  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 0 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[7 item(s), 3 transaction(s)] done [0.00s].
## sorting and recoding items ... [7 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 done [0.00s].
## writing ... [13 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].
reglas_a <- inspect(transacciones_1)
##      lhs                             rhs                 support   confidence
## [1]  {Correa Distr}               => {Bomba de Agua}     0.3333333 1         
## [2]  {Bomba de Agua}              => {Correa Distr}      0.3333333 1         
## [3]  {Filtro Nafta}               => {Limpia Inyectores} 0.3333333 1         
## [4]  {Limpia Inyectores}          => {Filtro Nafta}      0.3333333 1         
## [5]  {Filtro Aceite}              => {Filtro Aire}       0.3333333 1         
## [6]  {Filtro Aire}                => {Filtro Aceite}     0.3333333 1         
## [7]  {Filtro Aceite}              => {5W40}              0.3333333 1         
## [8]  {5W40}                       => {Filtro Aceite}     0.3333333 1         
## [9]  {Filtro Aire}                => {5W40}              0.3333333 1         
## [10] {5W40}                       => {Filtro Aire}       0.3333333 1         
## [11] {Filtro Aceite, Filtro Aire} => {5W40}              0.3333333 1         
## [12] {5W40, Filtro Aceite}        => {Filtro Aire}       0.3333333 1         
## [13] {5W40, Filtro Aire}          => {Filtro Aceite}     0.3333333 1         
##      coverage  lift count
## [1]  0.3333333 3    1    
## [2]  0.3333333 3    1    
## [3]  0.3333333 3    1    
## [4]  0.3333333 3    1    
## [5]  0.3333333 3    1    
## [6]  0.3333333 3    1    
## [7]  0.3333333 3    1    
## [8]  0.3333333 3    1    
## [9]  0.3333333 3    1    
## [10] 0.3333333 3    1    
## [11] 0.3333333 3    1    
## [12] 0.3333333 3    1    
## [13] 0.3333333 3    1
library(arulesViz)
plot(transacciones_1, method = "graph")

R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

LS0tCnRpdGxlOiAiUmVnbGFzIGRlIGFzb2NpYWNpb24iCmF1dGhvcjogIk1hcmNlbG8gVmFuZWxsYSIKZGF0ZTogIjIwMjUtMTEtMDQiCm91dHB1dDogIAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHRydWUKICAgIHRvY19kZXB0aDogNQogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgY29kZV9kb3dubG9hZDogVFJVRQotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKIyBUaXBvcyBkZSB2YXJpYWJsZXMgZW4gUgoKVmVjdG9yZXMKCmBgYHtyfQp2ZWN0b3JfMSA8LSBjKDEsMiwzLDQsNSw2LDcsOCw5KQp2ZWN0b3JfMQpgYGAKCk1hdHJpY2VzCgpgYGB7cn0KTWlfbWF0cml6IDwtIG1hdHJpeChkYXRhID0gdmVjdG9yXzEsIG5jb2wgPSAzLCBieXJvdyA9IEZBTFNFKQpNaV9tYXRyaXoKYGBgCgpQb25lcmxlIG5vbWJyZSBhIGxhcyBjb2x1bW5hcwoKYGBge3J9CmNvbG5hbWVzKE1pX21hdHJpeikgPC0gYygiQWx0dXJhIiwiUGVzbyIsIlRhbGxhIikKcm93bmFtZXMoTWlfbWF0cml6KSA8LSBjKCJKdWFuIiwiUGVkcm8iLCJNYXJpbyIpCk1pX21hdHJpegpgYGAKCgoKSW1wb3J0YXIgZGF0b3MgZGUgdW4gYXJjaGl2byBjc3YKCmBgYHtyfQpsaWJyYXJ5KHJlYWRyKQpkYXRvc19ncm9jZXJpZXMgPC0gcmVhZF9jc3YoImRhdG9zX2dyb2Nlcmllcy5jc3YiKQojIGRhdG9zX2dyb2NlcmllcyA8LSByZWFkX2NzdigiaHR0cHM6Ly9yaWNhcmRvcnBhbG1hLmdpdGh1Yi5pby9SLURhdGFzZXQvZGF0b3NfZ3JvY2VyaWVzLmNzdiIpCmBgYAoKQ3JlYW1vcyBudWVzdHJvIHZlY3RvciBkZSBkYXRvcyBwYXJhIGVsIGFuYWxpc2lzIGRlIHRpY2tldHMuIEVzdG9zIGRhdG9zIHBvZHJpYW1vcyB0cmFlcmxvIGRlIHVuIGFyY2hpdm8sIHBvbmVybG9zIGVuIHVuYSBsaW5lYSBkZSBjb21hbmRvIGRlIHIgbyB0cmFlcmxvcyBkZXNkZSBsYSB3ZWIKCmBgYHtyfQpkYXRvc19jcnVkbyA8LSBjKDEsMSwxLDIsMiwzLDMsIjVXNDAiLCJGaWx0cm8gQWNlaXRlIiwiRmlsdHJvIEFpcmUiLCJDb3JyZWEgRGlzdHIiLCJCb21iYSBkZSBBZ3VhIiwiRmlsdHJvIE5hZnRhIiwiTGltcGlhIElueWVjdG9yZXMiKQpkYXRvc19jcnVkbwpgYGAKClZhbW9zIGEgdHJhbnNmb3JtYXIgbnVlc3Ryb3MgZGF0b3MgY3J1ZG9zIGVuIHVuYSBtYXRyaXoKCmBgYHtyfQpsaXN0YV9jb3J0YSA8LSBtYXRyaXgoZGF0b3NfY3J1ZG8sbmNvbD0yLCBieXJvdz1GQUxTRSkKbGlzdGFfY29ydGEKYGBgCgpBaG9yYSBsZSBjb2xvY2Ftb3Mgbm9tYnJlIGEgbGFzIGNvbHVtbmFzCgpgYGB7cn0KZGltbmFtZXMobGlzdGFfY29ydGEpIDwtIGxpc3Qoc2FsaWRhID0gYygxLDIsMyw0LDUsNiw3KSAsIHByb2R1Y3RvID0gYygidGlja2V0IiwicHJvZHVjdG8iKSApCmxpc3RhX2NvcnRhCmBgYAoKRGF0b3MgZW4gZm9ybWEgZGUgbGlzdGEgbGFyZ2EKCmBgYHtyfQpkYXRvc19tIDwtIGMoMSwxLDEsMCwwLDAsMCwgMCwwLDAsMSwxLDAsMCwgMCwwLDAsMCwwLDEsMSkKZGF0b3NfbQpgYGAKCkFob3JhIGxvIHRyYW5zZm9ybWFtb3MgZW4gdW5hIG1hdHJpegoKYGBge3J9Cmxpc3RhX2xhcmdhIDwtIG1hdHJpeChkYXRvc19tLG5yb3c9MyxieXJvdz1UUlVFKQpsaXN0YV9sYXJnYQpgYGAKCkNvbG9jYW1vcyBub21icmVzIGEgbGFzIGZpbGFzIHkgY29sdW1uYXMKCmBgYHtyfQpkaW1uYW1lcyhsaXN0YV9sYXJnYSkgPC0gbGlzdCh0aWNrZXQgPSBjKDEsMiwzKSAsIHByb2R1Y3RvID0gYygiNVc0MCIsIkZpbHRybyBBY2VpdGUiLCJGaWx0cm8gQWlyZSIsIkNvcnJlYSBEaXN0ciIsIkJvbWJhIGRlIEFndWEiLCJGaWx0cm8gTmFmdGEiLCJMaW1waWEgSW55ZWN0b3JlcyIpKQpsaXN0YV9sYXJnYQpgYGAKClJlY29yZGVtb3MgYW50ZXMgZGUgdXRpbGl6YXIgY3VhbHF1aWVyIHBhcXVldGUgZGUgciBxdWUgc2UgaW52b2NhIGNvbiBlbCBjb21hbmRvIGxpYnJhcnksIGVsIHBhcXVldGUgZGViZSBzZXIgaW5zdGFsYWRvCgpgYGB7cn0KbGlicmFyeShhcnVsZXMpCmBgYAoKYGBge3J9CmFwcmlvcmkobGlzdGFfbGFyZ2EpCmBgYAoKYGBge3J9CnRyYW5zYWNjaW9uZXNfMSA8LSBhcHJpb3JpKGxpc3RhX2xhcmdhKQoKYGBgCgoKYGBge3J9CnJlZ2xhc19hIDwtIGluc3BlY3QodHJhbnNhY2Npb25lc18xKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KGFydWxlc1ZpeikKcGxvdCh0cmFuc2FjY2lvbmVzXzEsIG1ldGhvZCA9ICJncmFwaCIpCmBgYAoKCgoKCgojIyBSIE1hcmtkb3duCgpUaGlzIGlzIGFuIFIgTWFya2Rvd24gZG9jdW1lbnQuIE1hcmtkb3duIGlzIGEgc2ltcGxlIGZvcm1hdHRpbmcgc3ludGF4IGZvciBhdXRob3JpbmcgSFRNTCwgUERGLCBhbmQgTVMgV29yZCBkb2N1bWVudHMuIEZvciBtb3JlIGRldGFpbHMgb24gdXNpbmcgUiBNYXJrZG93biBzZWUgPGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20+LgoKV2hlbiB5b3UgY2xpY2sgdGhlICoqS25pdCoqIGJ1dHRvbiBhIGRvY3VtZW50IHdpbGwgYmUgZ2VuZXJhdGVkIHRoYXQgaW5jbHVkZXMgYm90aCBjb250ZW50IGFzIHdlbGwgYXMgdGhlIG91dHB1dCBvZiBhbnkgZW1iZWRkZWQgUiBjb2RlIGNodW5rcyB3aXRoaW4gdGhlIGRvY3VtZW50LiBZb3UgY2FuIGVtYmVkIGFuIFIgY29kZSBjaHVuayBsaWtlIHRoaXM6CgpgYGB7ciBjYXJzfQpzdW1tYXJ5KGNhcnMpCmBgYAoKIyMgSW5jbHVkaW5nIFBsb3RzCgpZb3UgY2FuIGFsc28gZW1iZWQgcGxvdHMsIGZvciBleGFtcGxlOgoKYGBge3IgcHJlc3N1cmUsIGVjaG89RkFMU0V9CnBsb3QocHJlc3N1cmUpCmBgYAoKTm90ZSB0aGF0IHRoZSBgZWNobyA9IEZBTFNFYCBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIHRoZSBjb2RlIGNodW5rIHRvIHByZXZlbnQgcHJpbnRpbmcgb2YgdGhlIFIgY29kZSB0aGF0IGdlbmVyYXRlZCB0aGUgcGxvdC4K