Nombre: Realizar operaciones con vectores y data.frames en R

Objetivo: ejecutar operacionesen R simulando estructuras de datos vectores y data.frames en R.

Descripción. Desarrollar la práctica realizada en clase presencial del viernes 15 de junio del 2018 del uso de vectores y data.frames en R

VECTORES

x <- 1:10
x
##  [1]  1  2  3  4  5  6  7  8  9 10
y <- c(9,5,7,6,4,0,3,2,8,7)
y
##  [1] 9 5 7 6 4 0 3 2 8 7
nombres <- c('hugo', 'paco', 'luis', 'paty', 'maria', 'Ruben', 'Gaby')
nombres
## [1] "hugo"  "paco"  "luis"  "paty"  "maria" "Ruben" "Gaby"

Despliega las variables de la sesion

ls()

edades <- c(28, 26, 32, 24, 33, 27, 19)
edades
## [1] 28 26 32 24 33 27 19
sueldos <- c(12.5, 13.4, 56.7, 14.8, 7.1, 15.1, 13.6)
sueldos
## [1] 12.5 13.4 56.7 14.8  7.1 15.1 13.6
genero <- c("M", "M", "M", "F", "F", "M", "F")
genero
## [1] "M" "M" "M" "F" "F" "M" "F"

Sacar el promedio de las edades

?mean ## genera ayuda

starting httpd help server … done

help (‘mean’) #genera ayuda

mean.edades <- mean (edades)
mean.edades
## [1] 27

Sacar cuantos nombres hay en el vector

length(nombres)
## [1] 7

Sacar cuantos F y cuantos M son

genero == ‘M’

Conocer las posiciones de M, los indices de un arreglo

which arroja elementos de un arreglo que cumplan con una condicion

which (genero == “M”)

[1] 1 2 3 6

nombres ### [1] “hugo” “paco” “luis” “paty” “maria” “Ruben” “Gaby” ### cuales nombres son de genero F

nombres [4:5] ##porque ya sabemos que es del 1 al 3

[1] “paty” “maria”

nombres [which(genero == “F”)]

[1] “paty” “maria” “Gaby”

saber que personas tienen entre 25 y 30 años

which(edades>=25 & edades<=30)

[1] 1 2 6

nombres [which(edades>=25 & edades<=30)]

[1] “hugo” “paco” “Ruben”

c es un valor que inicializa un vector

pasatiempos <- c(‘musica’, ‘musica’, ‘estudio’, ‘videojuegos’, ‘musica’, ‘musica’, ‘videojuegos’) edades

[1] 28 26 32 24 33 27 19

pasatiempos

[1] “musica” “musica” “estudio” “videojuegos” “musica”

[6] “musica” “videojuegos”

Quiero que me digas a que nombres de personas les gustan los videojuegos y que edad tienen estos

nombres [which (pasatiempos == ‘videojuegos’)] #nombres de quienes juegan videojuegos

[1] “paty” “Gaby”

edades [which (pasatiempos == ‘videojuegos’)] #edades de quienes juegan videojuegos

[1] 24 19

mean (edades [which (pasatiempos == ‘videojuegos’)]) #edad promedio de los que juegan videojuegos

[1] 21.5

genero [which (pasatiempos == ‘videojuegos’)]

[1] “F” “F”

generar una tabla apartir de todos los vectores que tenemos

nombres

[1] “hugo” “paco” “luis” “paty” “maria” “Ruben” “Gaby”

edades

[1] 28 26 32 24 33 27 19

sueldos

[1] 12.5 13.4 56.7 14.8 7.1 15.1 13.6

genero

[1] “M” “M” “M” “F” “F” “M” “F”

pasatiempos

[1] “musica” “musica” “estudio” “videojuegos” “musica”

[6] “musica” “videojuegos”

misdatos <- data.frame (nombres, edades, sueldos, genero, pasatiempos, stringsAsFactors = FALSE) misdatos

nombres edades sueldos genero pasatiempos

1 hugo 28 12.5 M musica

2 paco 26 13.4 M musica

3 luis 32 56.7 M estudio

4 paty 24 14.8 F videojuegos

5 maria 33 7.1 F musica

6 Ruben 27 15.1 M musica

7 Gaby 19 13.6 F videojuegos

agregando 5 registros completos a mis datos

help (rbind)

nuevo <- c (‘Ene’, ‘25’, ‘345.6’, ‘F’, ‘videojuegos’)

misdatos <- rbind (misdatos, nuevo) ## agrega nuevo registro a misdatos

misdatos <- rbind (misdatos, c(‘Jorge’, ‘41’, ‘100’, ‘M’, ‘musica’)) misdatos <- rbind (misdatos, c(‘Ray’, ‘33’, ‘254.5’, ‘M’, ‘musica’)) misdatos <- rbind (misdatos, c(‘Cony’, ‘34’, ‘300.21’, ‘F’, ‘videojuegos’)) misdatos <- rbind (misdatos, c(‘Eduardo’, ‘41’, ‘50.50’, ‘M’, ‘estudio’)) misdatos

nombres edades sueldos genero pasatiempos

1 hugo 28 12.5 M musica

2 paco 26 13.4 M musica

3 luis 32 56.7 M estudio

4 paty 24 14.8 F videojuegos

5 maria 33 7.1 F musica

6 Ruben 27 15.1 M musica

7 Gaby 19 13.6 F videojuegos

8 Ene 25 345.6 F videojuegos

9 Jorge 41 100 M musica

10 Ray 33 254.5 M musica

11 Cony 34 300.21 F videojuegos

12 Eduardo 41 50.50 M estudio

saber que tipo de datos es misdatos

class(misdatos) ### [1] “data.frame”

class(edades)

[1] “numeric”

class(nombres)

[1] “character”

visualizar mis datos por medio de VIEW

View(misdatos)

conocer cuantos renglones y columnas hay en un data.frame

length(misdatos)

[1] 5

str(misdatos)

‘data.frame’: 12 obs. of 5 variables:

$ nombres : chr “hugo” “paco” “luis” “paty” …

$ edades : chr “28” “26” “32” “24” …

$ sueldos : chr “12.5” “13.4” “56.7” “14.8” …

$ genero : chr “M” “M” “M” “F” …

$ pasatiempos: chr “musica” “musica” “estudio” “videojuegos” …

acceder a los renglones y columnas de un data.frame

mostrar los primeros 6 renglones

head(misdatos)

nombres edades sueldos genero pasatiempos

1 hugo 28 12.5 M musica

2 paco 26 13.4 M musica

3 luis 32 56.7 M estudio

4 paty 24 14.8 F videojuegos

5 maria 33 7.1 F musica

6 Ruben 27 15.1 M musica

mostrar los ultimos 6 renglones

tail(misdatos)

nombres edades sueldos genero pasatiempos

7 Gaby 19 13.6 F videojuegos

8 Ene 25 345.6 F videojuegos

9 Jorge 41 100 M musica

10 Ray 33 254.5 M musica

11 Cony 34 300.21 F videojuegos

12 Eduardo 41 50.50 M estudio

mostrar del 1 al 5

misdatos [1:5,]###la coma significa que si no hay nada despues es todas las columnas

nombres edades sueldos genero pasatiempos

1 hugo 28 12.5 M musica

2 paco 26 13.4 M musica

3 luis 32 56.7 M estudio

4 paty 24 14.8 F videojuegos

5 maria 33 7.1 F musica

misdatos [1:5, 4:5]### muestra renglones y columnas especificas

genero pasatiempos

1 M musica

2 M musica

3 M estudio

4 F videojuegos

5 F musica

misdatos [6,] ###muestra un renglon especifico

nombres edades sueldos genero pasatiempos

6 Ruben 27 15.1 M musica

otra manera de acceder a los registros de un data.frame

misdatos\(nombres ## el "\)“” identifica el nombre del atributo en el data.frame

[1] “hugo” “paco” “luis” “paty” “maria” “Ruben” “Gaby”

[8] “Ene” “Jorge” “Ray” “Cony” “Eduardo”

mostrar mas de una columna

vista.misdatos <- c(misdatos\(nombres, misdatos\)edades) vista.misdatos

[1] “hugo” “paco” “luis” “paty” “maria” “Ruben” “Gaby”

[8] “Ene” “Jorge” “Ray” “Cony” “Eduardo” “28” “26”

[15] “32” “24” “33” “27” “19” “25” “41”

[22] “33” “34” “41”

analisis de datos usando el data.frame

sacar la media de mis sueldos de misdatos

mean.sueldos <- mean(as.double(misdatos$sueldos)) mean.sueldos

[1] 98.6675

cuales son los datos de la persona que mas gana dinero

max(as.double(misdatos$sueldos))

[1] 345.6

which.max(as.double(misdatos$sueldos))

[1] 8

misdatos [which.max(as.double(misdatos$sueldos)),]

nombres edades sueldos genero pasatiempos

8 Ene 25 345.6 F videojuegos

cuales son los datos de la persona que menos gana dinero

misdatos [which.min(as.double(misdatos$sueldos)),]

nombres edades sueldos genero pasatiempos

5 maria 33 7.1 F musica