Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Lab3/Lab3_R.R
2710 views
1
# install.packages("dplyr") # filter data
2
#install.packages("readxl") # excel, csv
3
# install.packages("tidyr")
4
5
'Solo es necesario cargar una vez los paquetes, luego simplemente debemos llamarlo:'
6
7
library(dplyr) # librería de limpieza de datos
8
library(tidyr)# librería de limpieza de datos
9
library(readxl) # lobreria para subir archivos excel, csv
10
getwd()
11
user <- Sys.getenv("USERNAME") # username
12
13
14
print(user)
15
16
17
setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/Lab3") ) # set directorio
18
19
netflix <- read.csv("../data/netflix_titles.csv", encoding = "UTF-8") # encoding : Leer caracteres especiales
20
21
# ../ salir de una carpeta, ../../ será salir dos veces de la carpeta
22
23
netflix <- read.csv("../data/netflix_titles.csv", encoding = "UTF-8", na.strings=c("",NA))
24
25
# na.strings=c("",NA) reemplaza vacios por missing
26
27
# NA, NULL missing en R
28
29
# Filas y columnas
30
dim(netflix)
31
32
# Clase de estructura de objeto
33
34
class(netflix)
35
36
# Mostrar la variable release_year
37
38
print(release_year)
39
40
print(netflix$release_year) # será necesario llamar la variable desde la base de datos
41
42
# Permite convertir cada columna como objeto
43
44
attach(netflix)
45
46
print(release_year)
47
48
# -------------------------------------------------------
49
50
# Información de cada variable
51
52
str(netflix)
53
54
#
55
56
lapply(netflix, class) # lapply(x, FUN):: list()
57
58
str(lapply)
59
60
sapply(netflix, class) # sapply(x, FUN):: vector, Datrame,
61
62
summary(netflix) # estadisticas desciptivas de las variables
63
64
## Verificando ID
65
66
unique(show_id)
67
68
length(unique(show_id))
69
70
duplicated(show_id)
71
72
sum(duplicated(show_id) ) # cantidad de duplicados
73
74
### ***Exploring a DataFrame***:
75
76
class( netflix["director"] ) # Dataframe
77
netflix["director"]
78
79
class( netflix[director,] )
80
81
class( netflix$director ) # lista o vector
82
83
#-----------------------------------------------------------------------
84
85
## revisando missing values
86
87
" En R, tenemos dos formas de missing, en general, NA y Null "
88
unique(director)
89
unique(director)[1]
90
91
any( is.na(netflix["director"]) ) # TRUE: al menos un missing value
92
93
any(is.null(netflix["director"]))
94
95
any(is.na(netflix$director))
96
97
any(is.na(director)) # al menos una observación es Missing
98
99
## cantidad de missing
100
101
sum(is.na(director))
102
103
## Manipulando missing values
104
105
netflix %>% drop_na()
106
107
netflix2 <- netflix %>% drop_na() # borras todas las filas con missig values
108
109
netflix2 <- netflix %>% drop_na(director)
110
111
# borras observaciones con missing values de la columna director
112
113
netflix <- netflix %>% replace_na(list(director = "Sin director"))
114
115
"En R debe asignarse el objeto alterado a uno nuevo. En este caso a Netflix2"
116
#----------------------------------------------------------------------------
117
118
### ***Subsetting columns***
119
120
netflix2 <- netflix[,c('director','release_year','show_id')] # seleccionar columnas
121
View(netflix2)
122
123
View( netflix[1:100,c('director','release_year')] ) # filtrar columnas y filas
124
125
View( netflix[c(1,10,100),c('director','release_year')] )
126
127
View( netflix[c(1,10,100),c(1,5)] ) # usando posiciones
128
129
130
View( netflix[1:100, c(1:5,10)] ) # usando posiciones
131
132
names(netflix)
133
134
names(netflix)[2]
135
136
#----------------------------------------------------------------------------
137
138
# Crear una nueva variable
139
140
netflix['number'] = runif(n = dim(netflix)[1], min = 1, max = 10)
141
netflix$number2 = runif(n = dim(netflix)[1], min = 1, max = 10)
142
143
### ***Sorting and Subsetting***
144
145
netflix['new'] = netflix['release_year'] + netflix['number']
146
147
netflix['new2'] = netflix$release_year + netflix$number
148
149
# ordering de manera ascendente por default
150
151
netflix <- netflix[order(netflix$release_year),]
152
153
netflix <- netflix[order(- netflix$release_year),] # descendente
154
155
#attach(netflix)
156
157
netflix <- netflix[order(netflix$release_year, netflix$number2),]
158
159
netflix <- netflix[order(netflix$release_year, - netflix$number2),]
160
161
#----------------------------------------------------------------------------
162
163
### ***Subsetting rows***
164
165
netflix2 <- netflix[which(netflix$release_year < 2011 & netflix$number > 5), ]
166
View(netflix2)
167
168
netflix %>% filter( release_year < 2011 & netflix$number > 5 ) # using Tdyr library
169
170
171
### ***Subsetting based on text data***
172
173
netflix2 <- netflix[which(netflix$country == "Peru"), ]
174
View(netflix2)
175
176
netflix2 <- netflix[which(netflix$country == "Mexico"), ]
177
View(netflix2)
178
179
180
netflix2 <- netflix %>% filter( (country == "Brazil") | ( netflix$country == "Peru") )
181
View(netflix2)
182
183
# American movies
184
185
netflix2 <- netflix %>% filter( (type == "Movie") & ( country == "United States")
186
& (release_year > 2019) )
187
188
# %in%
189
190
"
191
If you want to filter by multiple values of a categorical variable,
192
the easiest way is to use the %in% method "
193
194
195
data_frame <- netflix[netflix$country %in% c("Peru","Chile"),]
196
197
data_frame <- netflix[! netflix$country %in% c("Peru","Chile"),] # ! negación en R
198
199
data_frame <- netflix %>% rename(Titulo = title,
200
Duration_movie = duration)
201
202
203
data_frame <- netflix[, ! names(netflix) %in% c('show_id', 'director')] # Drop variables
204
205
# Export dataset
206
207
write.csv(base, '../data/new_base.csv')
208
209
write.csv(base, '../data/new_base.xlsx')
210
211
212