-
Notifications
You must be signed in to change notification settings - Fork 0
/
Data Frame
229 lines (171 loc) · 8.76 KB
/
Data Frame
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{verbatim}
#########################################################################################################################
##Este script fue creado por Rladies Concepción. Para este taller trabajamos Natalia Riquelme, Carolina Onate, Luisa Reyes,
##Camila Molina y Macarena Valenzuela Beltrán.
###########################################################################################################################
#Hola, Bienvenid@ a nuestro segundo taller de R, queremos que te sientas confianza para plantear tus dudas durante el desarrollo del taller.
###Data Frames####
#Data Frame
###Los data frames son estructuras de datos de dos dimensiones (rectangulares) que pueden
#contener datos de diferentes tipos, por lo tanto, son heterogéneas. #Esta estructura de datos es la más usada para realizar análisis de datos y seguro te resultará familiar si has trabajado con otros paquetes estadísticos.
###Podemos entender a los data frames como una versión más flexible de una matriz.
#Mientras que en una matriz todas las celdas deben contener datos del mismo tipo,
#los renglones de un data frame admiten datos de distintos tipos, pero sus columnas
#conservan la restricción de contener datos de un sólo tipo.
##En términos generales, los renglones en un data frame representan casos,
#individuos u observaciones, mientras que las columnas representan atributos,
#rasgos o variables.
# Un data frame está compuesto por vectores.
#Además, podemos asignar un nombre a cada vector, que se convertirá en el nombre de la columna.
##Como todos los nombres, es recomendable que este sea claro, no ambiguo y descriptivo.
#Creando un Data Frame
paciente <- c(1,2,3,4)
edad <- c(25,34,28,52)
diabetes <- c("Tipo1","Tipo2","Tipo1", "Tipo1")
estado <- c("Peor","Mejor","Excelente","Peor")
datospaciente <- data.frame(paciente, edad, diabetes, estado)
datospaciente
paciente edad diabetes estado
1 1 25 Tipo1 Peor
2 2 34 Tipo2 Mejor
3 3 28 Tipo1 Excelente
4 4 52 Tipo1 Peor
#Especificando elementos de una data frame
#Según columna
datospaciente[1:2]
paciente edad
1 1 25
2 2 34
3 3 28
4 4 52
datospaciente[c("diabetes","estado")]
diabetes estado
1 Tipo1 Peor
2 Tipo2 Mejor
3 Tipo1 Excelente
4 Tipo1 Peor
datospaciente[3:4]
diabetes estado
1 Tipo1 Peor
2 Tipo2 Mejor
3 Tipo1 Excelente
4 Tipo1 Peor
#la notación $ es usada para indicar una variable particular en un data frame dado
datospaciente$edad
[1] 25 34 28 52
datospaciente$paciente
[1] 1 2 3 4
datospaciente$diabetes
[1] Tipo1 Tipo2 Tipo1 Tipo1
Levels: Tipo1 Tipo2
datospaciente$estado
[1] Peor Mejor Excelente Peor
Levels: Excelente Mejor Peor
#Si se quiere tabular el tipo de "diabetes" según "estado" se usa el siguiente código
table(datospaciente$diabetes, datospaciente$estado)
Excelente Mejor Peor
Tipo1 1 0 2
Tipo2 0 1 0
##Manipulación de Data Frames##
####### Instalando paquetes.
"'La instalación básica de R viene equipada con múltiples funciones para la importación de datos,
la realización de transformaciones, el ajuste y evaluación de modelos estadísticos,
las representaciones gráficas, etc. Sin embargo, la enorme potencia de R deriva de su capacidad de
incorporar en cualquier momento nuevas funciones capaces de realizar nuevas tareas.
Un paquete (package) es una colección de funciones, datos y código R que se almacenan en una carpeta
conforme a una estructura bien definida, fácilmente accesible para R.
En la web de R se puede consultar la lista de paquetes disponibles. En la actualidad existen más
de 14.000 paquetes disponibles que completan diferentes funciones.
Cuando instalamos R se incorporan por defecto numerosos paquetes.
Podemos ver una lista de los paquetes que actualmente tenemos instalados en nuestro pc
ejecutando: https://cran.r-project.org/web/packages/available_packages_by_date.html
'"
# Los paquetes se instalan una sola vez con el siguiente comando -> install.packages(), dentro
# de los paréntesis debe ir el paquete que vamos a instalar.
install.packages("UsingR")
install.packages("scales") # Paquete que permite generar gráficos y mapas
install.packages("dplyr") # funciones para análisis de datos
####### Cargando las librerias de los paquetes
### Estas librerías son para hacer uso de aquellos paquetes cargados, es necesario cargarlas cada
# vez que haremos uso de ellas.
library(UsingR)
library(dplyr)
library(scales)
#Using R contiene el archivo de datos de una maratón de 2002, datos que analizaremos a continuación:
data <- UsingR::nym.2002
# Si queremos seleccionar variables desde nuestra tabla, usaremos el comando select()
edades <- select(data,age)
head(edades) # nos muestra los primeros 6 registros de nuestros datos
# Si uno quiere calcular por ejemplo la media de las edades marca
# un error porque se trata de una matriz no se puede calcular la media de una matriz,
# así que hay que deslistar los elementos de la matriz con el comando unlist
edades <- select(data, age) %>% unlist
edades
#para calcular la media entonces:
mean(edades)
#para calcular la desviación estandar
sd(edades)
#el histograma de los corredores
hist(edades)
#---para calcular las edades por género; Por ejemplo para MeanFemaleeres se filtra a través del comando filter
MeanFemale <- filter(data, gender == "Female")
YearMeanFemale <- select(MeanFemale, age) %>% unlist
mean(YearMeanFemale)
hist(YearMeanFemale)
##----calculando lo mismo para los hombres
hom <- filter(data, gender == "Male")
edhom <- select(hom, age) %>% unlist
mean(edhom)
hist(edhom)
###############################################
#Funciones gráficas
#title() permite añadir un título o subtítulo.
#font() Fuente a usar en el texto.
#las() Cambia el estilo de las etiquetas de los ejes (0 paralelo a los ejes, 1 siempre horizontales, 2, perpendiculares a los ejes, 3 siempre verticales)
#col() Color usado para el gráfico (ya sea para puntos, líneas.). Puede vers un listado completo de los colores disponibles en R ejecutando la función colors(). help(colors) explica como obtener aún más colores. Este documento contiene una muestra de cada color.
colors() #Listado completo de los colores disponibles en R
help(colors) #Explica como obtener aún más colores
#utilizaremos datos que contienen el salario de trabajadores según su género
install.packages("Lock5Data")
library(Lock5Data)
data("SalaryGender")
attach(SalaryGender) ## Este comando nos permite trabajar con las columnas de nuestra tabla sin problemas
Age
PhD
#Podemos ver la distribución de salarios entre hombres y mujeres mediante un histograma
#combinado utilizando la función histStack() del paquete plotrix
install.packages("plotrix")
library(plotrix)
histStack(Salary, Gender, legend.pos = "topright", main = " Distribución de Salarios por género")
# Procederemos a llamar la nueva base de datos a utilizar, pero antes instalamos y abrimos el paquete
#Lock5Data que contiene los datos que utilizaremos.
#"barplot" se utiliza para dibujar diagramas de barras.
#El siguiente ejemplo muestra el número de países en cada una de las 7 regiones en que
#se dividió el planeta para el estudio de los niveles de felicidad:
data("HappyPlanetIndex")
attach(HappyPlanetIndex)
barplot(table(Region) , xlab = "Region", main = "Happiness level by region", col = rainbow(10))
#El paquete plotrix contiene la función barp() que permite dar "volumen" a la barras:
barp(table(Region), col = "lightblue", cylindrical = TRUE, shadow = TRUE)
#Es posible construir diagramas de barras por categorías;
# Podemos, por ejemplo representar la frecuencia de personas con doctorado por sexo utilizando los
#datos del dataframe SalaryGender
names(SalaryGender)
library(ggplot2)
SalaryGender$PhD <- factor(SalaryGender$PhD, levels = c(0,1), c("Sin PhD","PhD"))
SalaryGender$Gender <- factor(SalaryGender$Gender, levels = c(0,1), labels = c("Mujer","Hombre"))
SalaryGender %>% group_by(Gender, PhD) %>% summarise(MeanSalary = mean(Salary)) %>%
ggplot2::ggplot() +
geom_bar(stat = "identity",position = position_dodge(width = 1), aes(x = Gender, y = MeanSalary, fill = Gender))+
facet_wrap(~PhD) +ggtitle("Promedio de salarios por Género") + theme(legend.position="none") +
labs(x = " ", y = "Promedio Salarios en $1.000's")
barplot(table(Gender,PhD), beside = TRUE, legend.text = TRUE, col = c("pink","cyan"))
#Aporta la misma información que el diagrama de barras, pero en forma de diagrama de sectores
pie(table(Region), main = "Gráfico de torta")
# El paquete plotrix permite elaborar diagramas de sectores en 3D mediante la función pie3D
pie3D(table(Region), labelpos = , main = " ¿o de pizza?")
\end{verbatim}
\end{document}