- Configurar y poner a funcionar R y Rstudio.
- Conocer los tipos y estructuras de datos básicos de R.
- Conocer los operadores y funciones más frecuentes de R.
- Importar datos.
- Obtener sumarios básicos con R.
14 de agosto de 2018
Which of the following would you most prefer?
A: a puppy,
B: a pretty flower from your sweety, or
C: a large, properly formatted data file?
–Futurama, Fear of a bot planet, 1999.
Al carecer de intuición, las computadoras no pueden distinguir 1+1=2 de “1 busca lleno de esperanza, el camino que las ansias…”
Por lo tanto se manejan de manera estricta con tipos de datos.
Tipo | Variantes | Operaciones |
---|---|---|
numeric | integer, double | Aritméticas |
character | character, string | Manipulación de texto |
factor | ordenado, no ordenado | Variables nominalesu ordinales |
lógicos | TRUE , FALSE , NA |
Lógicas, missing cases |
date | POSIXct | Fecha y hora. |
R tiene dos familias de funciones que hacen muy fácil verificar el tipo de datos y cambiar los datos de un tipo a otro.
is.tipo()
regresan un valor lógico.
as.tipo()
cambian de un tipo de datos a otro.
TRUE
=1, FALSE
=0.x <- "objeto"
\(\neq\) x <- objeto
A diferencia de SPSS o Stata, R hace explícitas para el usuario las estructuras de datos.
Esto tiene una desventaja -debemos conocer con qué estructura de datos estamos trabajando y cómo operar sobre ella- y una gran ventaja: podemos manipular datos de manera totalmente flexible.
Estructura | Dimensiones | Tipos | Nota |
---|---|---|---|
vector | 1 | Múltiples | Escalar= vector de largo 1. |
matrix | 2 | Únicos | Uso interno en funciones. |
array | 3 o más | Únicos | avoid! |
data.frame | 2 | Múltiples | Base de datos: filas*columnas |
list | 3 o más | Múltiples | Resultados de una función |
x[2]
length()
names()
length()
regresa el largo del vector, la cantidad de registros separados que tiene registrados.
names()
es un metadato opcional con un índice de nombres para cada registro.# Vector numérico 1:10
## [1] 1 2 3 4 5 6 7 8 9 10
# Vector de caracteres nombres <- c("miriam", "denisse", "alejandro", "julia", "elisangela", "adrian") nombres
## [1] "miriam" "denisse" "alejandro" "julia" "elisangela" ## [6] "adrian"
nombres [3]
## [1] "alejandro"
sedes <- c(poussin = "Poussin 45", plaza = "Plaza Valentín Gómez Farías 12") sedes
## poussin plaza ## "Poussin 45" "Plaza Valentín Gómez Farías 12"
sedes ["plaza"] #Nótese el uso de ""
## plaza ## "Plaza Valentín Gómez Farías 12"
matrix(1:10, ncol=2)
## [,1] [,2] ## [1,] 1 6 ## [2,] 2 7 ## [3,] 3 8 ## [4,] 4 9 ## [5,] 5 10
NA
.length()
, names()
, colnames()
, rownames()
, ncol()
, nrow()
df[1,1]
o nombres de columnadf$var1
df <- data.frame(sedes = sedes, clase = c(FALSE, TRUE), horario = c(NA, 16)) df
## sedes clase horario ## poussin Poussin 45 FALSE NA ## plaza Plaza Valentín Gómez Farías 12 TRUE 16
knitr::kable(df)
sedes | clase | horario | |
---|---|---|---|
poussin | Poussin 45 | FALSE | NA |
plaza | Plaza Valentín Gómez Farías 12 | TRUE | 16 |
america_latina$mexico$cdmx$benito_juarez$mixcoac
foreign::
, haven::
y Hmisc::
reúnen varias funciones de importación.haven::
es accesible a través del menú “Import Dataset” de Rstudio.
No es una práctica recomendada guardar los datos en R
Op. | Función | Ejemplo | Nota |
---|---|---|---|
<- | Asigna nombre a objeto | a <- 1 | -> Cambia la dirección. |
+ | Suma | a + a | Operaciones vectoriales. |
- | Resta | a - a | Operaciones vectoriales. |
\(\ast\) | Multiplicación | a*2 | Operaciones vectoriales. |
/ | Realiza una división | a / 2 | Operaciones vectoriales. |
== | Igual | a == a | Devuelve TRUE o FALSE. |
[,] | Extrae valores | df[1,1] | Por posición |
$ | Extrae un vector | df$var | Por nombre |
: | Crea una secuencia | 1:10 | Intervalo: 1 |
%>% | Tubería de dplyr | x %>% sd | No es base. |
x son los datos sobre los que operamos.
Función | Operación | Ejemplo |
---|---|---|
mean() | Devuelve la media aritmética | mean(x) |
sd() | Devuelve el desvío estándar. | sd(x) |
median() | Devuelve la mediana. | median(x) |
summary() | Devuelve el sumario de un objeto | summary (x) |
sum() | Sumatoria de un vector | sum(x) |
str() | Estructura de un objeto | str(df) |
head() | 10 primeros registros | head(df) |
tail() | 10 últimos registros | tail(df) |
View() | Muestra una tabla con un df | View(df) |
table() | Crea una tabla de contingencia | table(x,x) |
summary()
para variables numéricas.x <- c(1,2,3,4,5) print(x)
## [1] 1 2 3 4 5
is.numeric(x)
## [1] TRUE
summary(x)
## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 1 2 3 3 4 5
summary()
para variables categóricas.x <- as.factor (c(rep ("Sí", 5), rep("No", 5), "NS/NC")) print (x)
## [1] Sí Sí Sí Sí Sí No No No No No NS/NC ## Levels: No NS/NC Sí
is.factor (x)
## [1] TRUE
summary (x)
## No NS/NC Sí ## 5 1 5
summary()
para multiples variablesdf <- data.frame( genero= c(rep ("M", 5), rep("F", 5), "NS/NC"), edad= rnorm(11, 30, 4) ) str(df)
## 'data.frame': 11 obs. of 2 variables: ## $ genero: Factor w/ 3 levels "F","M","NS/NC": 2 2 2 2 2 1 1 1 1 1 ... ## $ edad : num 32.2 32.4 31.3 24.2 33.8 ...
summary (df)
summary (df)
## genero edad ## F :5 Min. :24.20 ## M :5 1st Qu.:28.39 ## NS/NC:1 Median :30.08 ## Mean :29.95 ## 3rd Qu.:32.31 ## Max. :33.75
plot(df)
R detecta el tipo de variables y, para una numérica y una categórica elige un bloxplot.
plot(df)
Función | Operación | Ejemplo |
---|---|---|
c() | Concatena datos en un vector | x <- c(1,2,3) |
cbind() | Pega por columnas | cbind(x,x) |
rbind() | Pega por filas | rbind(x,x) |
rm() | Elimina un objeto del entorno | rm(x) |
En la práctica concreta y cotidiana del análisis de datos vamos a usar muy poco muchas de las funciones que revisamos en esta sesión.
Sin embargo todo el tiempo estameros manipulando estructuras de datos.
Y cometiendo errores por que utilizamos el tipo de datos incorrecto.
Texto | Enlace | Nota |
---|---|---|
R que R | https://enricescorsa.github.io/rquer/ | Guía muy básica. |
R para ciencias sociales | https://martinpaladino.github.io/rsociales/ | Incompleto |
R for data science | http://r4ds.had.co.nz/ | En inglés y no enfocado en ciencias sociales. Excelente de todos modos. |