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:
#---------------Lectura de base de datos original----------------------------
restaurantes_df <- read.csv("E:/Computo cientifico/Proyecto Parcial 1/Datafiniti_Fast_Food_Restaurants.csv/Datafiniti_Fast_Food_Restaurants.csv",
stringsAsFactors = FALSE, fileEncoding = "UTF-8")
#Hay ciertas descripciones de categorias dentro de la base de datos (df) que realmente
#son la misma, sólo que escrita con ciertas diferencias, vamos a homologar esas
#secciones de la categoria
restaurantes_df$categories <- restaurantes_df$categories %>%
replace(which(restaurantes_df$categories %in% c("Fast Food Restaurant", "Fast Food Restaurants", "Fast food restaurants")), "Fast Food")
cat("Los campos de la base de datos básica son:", colnames(restaurantes_df),".\nDe la cual nuestro enfoque será primordialmente en la ubicaión geográfica, la ciudad, tipo de restaurante y nombre de la franquicia correspondiente.")
## Los campos de la base de datos básica son: id dateAdded dateUpdated address categories city country keys latitude longitude name postalCode province sourceURLs websites .
## De la cual nuestro enfoque será primordialmente en la ubicaión geográfica, la ciudad, tipo de restaurante y nombre de la franquicia correspondiente.
restaurantes_df<-restaurantes_df %>% select(!c("id","dateAdded","dateUpdated","keys","sourceURLs","websites"))
summary(restaurantes_df)
## address categories city country
## Length:10000 Length:10000 Length:10000 Length:10000
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## latitude longitude name postalCode
## Min. :19.50 Min. :-159.38 Length:10000 Length:10000
## 1st Qu.:33.77 1st Qu.:-102.89 Class :character Class :character
## Median :37.71 Median : -87.95 Mode :character Mode :character
## Mean :37.34 Mean : -93.11
## 3rd Qu.:41.14 3rd Qu.: -81.45
## Max. :64.84 Max. : -67.46
## province
## Length:10000
## Class :character
## Mode :character
##
##
##
cat("Dentro de la base de datos tenemos un total de",length(unique(restaurantes_df$name)),"diferentes franquicias.")
## Dentro de la base de datos tenemos un total de 571 diferentes franquicias.
#En el df los estados (province) estan definidos por su forma acortada de "NY","CA"
#sin embargo, dentro de la paqueteria tidycensus, las df vienen usualmente con el
#estado definido por su valor completo "New York", "California"...
state_map <- data.frame(
state_abbreviation=c(
"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID",
"IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS",
"MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK",
"OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV",
"WI", "WY"
),
state_full_names =c(
"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut",
"Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana",
"Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts",
"Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
"New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota",
"Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina",
"South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
"West Virginia", "Wisconsin", "Wyoming"
)
)
#Agregar una columna con el valor correspondiente del estado.
#Usaremos la función grepl, ayuda a identificar si en dos vectores hay strings
#iguales. Aunque no sea el string completo, pueden ser partes parciales de string
restaurantes_df$state<-NA
for (i in seq.default(1,nrow(restaurantes_df))){
r=which(grepl(restaurantes_df$province[i], state_map$state_abbreviation))
if (r>0){
restaurantes_df$state[i]=state_map$state_full_names[r]
}
else {}
}
#Funcion de moda catefórica
moda <- function(x) {
uniqx <- unique(x)
uniqx[which.max(tabulate(match(x, uniqx)))]
}
cat("La ciudad en Estados Unidos con la mayor cantidad de restaurantes es",moda(restaurantes_df$city)," con un total de",sum(restaurantes_df$city==moda(restaurantes_df$city))," restaurantes.")
## La ciudad en Estados Unidos con la mayor cantidad de restaurantes es Houston con un total de 107 restaurantes.
#-----------------restaurantes_por_ciudad-----------------------
restaurantes_por_ciudad <- restaurantes_df %>%
group_by(city) %>%
summarise(Number_of_restaurants = n()) %>%
arrange(desc(Number_of_restaurants))
cat("Las ciudades con cantidad más alta de establecimientos:'n")
## Las ciudades con cantidad más alta de establecimientos:'n
head(restaurantes_por_ciudad, 15)
## # A tibble: 15 × 2
## city Number_of_restaurants
## <chr> <int>
## 1 Houston 107
## 2 Las Vegas 82
## 3 Phoenix 78
## 4 Columbus 72
## 5 Dallas 66
## 6 Orlando 65
## 7 Los Angeles 64
## 8 Miami 62
## 9 Chicago 57
## 10 San Antonio 54
## 11 Philadelphia 53
## 12 San Diego 49
## 13 Louisville 48
## 14 Cleveland 47
## 15 Atlanta 44
restaurantes_por_ciudad_plot<-ggplot(head(restaurantes_por_ciudad, 20), aes(x = reorder(city, -Number_of_restaurants), y = Number_of_restaurants)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Ciudades con más restaurantes", x = "Ciudad", y = "Número de restaurantes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
restaurantes_por_ciudad_plot
write.csv(head(restaurantes_por_ciudad, 15), "E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_ciudad.csv", row.names = TRUE)
ggsave("E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_ciudad_plot.png", plot = restaurantes_por_ciudad_plot, width = 8, height = 6, dpi = 300)
#-----------------restaurantes_por_categoria-----------------------
restaurantes_por_categoria <- restaurantes_df %>%
group_by(categories) %>%
summarise(Categories = n()) %>%
arrange(desc(Categories))
cat("Categorías de restaurantes de comida más populares:'n")
## Categorías de restaurantes de comida más populares:'n
head(restaurantes_por_categoria,10)
## # A tibble: 10 × 2
## categories Categories
## <chr> <int>
## 1 Fast Food 8799
## 2 Fast Food Restaurant and Burger Joint 260
## 3 Fast Food Restaurant and Mexican Restaurant 132
## 4 Fast Food Restaurant, American Restaurant, and Sandwich Place 101
## 5 Fast Food Restaurant, Sandwich Place, and American Restaurant 65
## 6 Sandwich Place and Fast Food Restaurant 35
## 7 Fast Food Restaurant and American Restaurant 29
## 8 American Restaurant and Fast Food Restaurant 22
## 9 Ice Cream Shop and Fast Food Restaurant 19
## 10 Burger Joint, Fast Food Restaurant, and American Restaurant 16
restaurantes_por_categoria_plot<-ggplot(head(restaurantes_por_categoria,5), aes(x = reorder(categories, -Categories), y = Categories)) +
geom_bar(stat = "identity", fill = "pink") +
labs(title = "Categorías más populares", x = "Categoria", y = "Número de restaurantes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
restaurantes_por_categoria_plot
write.csv(head(restaurantes_por_categoria,10), "E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_categoria.csv", row.names = TRUE)
ggsave("E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_categoria_plot.png", plot = restaurantes_por_categoria_plot, width = 8, height = 6, dpi = 300)
#-----------------restaurantes_por_estado-----------------------
restaurantes_df$state<-as.factor(restaurantes_df$state)
restaurantes_por_estado <- restaurantes_df %>%
group_by(state) %>%
summarise(Number = n()) %>%
arrange(desc(Number))
cat("Estados con la mayor cantidad de restaurantes: \n")
## Estados con la mayor cantidad de restaurantes:
head(restaurantes_por_estado,15)
## # A tibble: 15 × 2
## state Number
## <fct> <int>
## 1 California 1201
## 2 Texas 811
## 3 Florida 621
## 4 Ohio 522
## 5 Georgia 420
## 6 Illinois 405
## 7 Pennsylvania 383
## 8 Michigan 374
## 9 New York 352
## 10 Arizona 330
## 11 Tennessee 302
## 12 North Carolina 295
## 13 Indiana 254
## 14 Virginia 253
## 15 Massachusetts 205
restaurantes_por_estado_plot<-ggplot(head(restaurantes_por_estado,10), aes(x = reorder(state,-Number), y = Number)) +
geom_bar(stat = "identity", fill = "lightblue") +
labs(title = "Restaurantes por estado", x = "Categoria", y = "Número de restaurantes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
restaurantes_por_estado_plot
write.csv(head(restaurantes_por_estado,15), "E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_estado.csv", row.names = TRUE)
ggsave("E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_estado_plot.png", plot = restaurantes_por_estado_plot, width = 8, height = 6, dpi = 300)
#-----------------restaurantes_por_franquicia-----------------------
restaurantes_por_franquicia<-restaurantes_df %>% group_by(name) %>%
summarise(Quantity=n()) %>% arrange(desc(Quantity))
cat("Franquicias más populares en EU: \n")
## Franquicias más populares en EU:
head(restaurantes_por_franquicia,15)
## # A tibble: 15 × 2
## name Quantity
## <chr> <int>
## 1 McDonald's 1898
## 2 Taco Bell 1032
## 3 Burger King 833
## 4 Subway 776
## 5 Arby's 663
## 6 Wendy's 628
## 7 Jack in the Box 330
## 8 Pizza Hut 230
## 9 Dairy Queen 218
## 10 Domino's Pizza 215
## 11 Chick-fil-A 206
## 12 KFC 162
## 13 SONIC Drive In 125
## 14 Jimmy John's 119
## 15 Carl's Jr. 112
restaurantes_por_franquicia_plot<-ggplot(head(restaurantes_por_franquicia,10), aes(x = reorder(name,-Quantity), y = Quantity, fill=name)) +
geom_col(position=) +
scale_fill_tableau("Miller Stone") +
labs(title = "Franquicias más populares en EU", x = "Franquicia", y = "Número de restaurantes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
restaurantes_por_franquicia_plot
write.csv(head(restaurantes_por_franquicia,15), "E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_franquicia.csv", row.names = TRUE)
ggsave("E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_franquicia_plot.png", plot = restaurantes_por_franquicia_plot, width = 8, height = 6, dpi = 300)
#-----------------restaurantes_por_franquicia_ciudad-----------------------
restaurantes_por_franquicia_ciudad<-restaurantes_df %>% group_by(name,city) %>%
summarise(Quantity=n()) %>% arrange(desc(Quantity))
## `summarise()` has grouped output by 'name'. You can override using the
## `.groups` argument.
cat("Franquicias más populares en EU por franquicia y ciudad: \n")
## Franquicias más populares en EU por franquicia y ciudad:
head(restaurantes_por_franquicia_ciudad,15)
## # A tibble: 15 × 3
## # Groups: name [4]
## name city Quantity
## <chr> <chr> <int>
## 1 McDonald's Houston 27
## 2 Jack in the Box Houston 26
## 3 McDonald's Las Vegas 19
## 4 McDonald's Orlando 18
## 5 McDonald's Louisville 17
## 6 McDonald's Miami 16
## 7 Jack in the Box Los Angeles 15
## 8 Taco Bell Columbus 15
## 9 McDonald's Charlotte 13
## 10 McDonald's Phoenix 13
## 11 Burger King Los Angeles 12
## 12 Jack in the Box Dallas 12
## 13 McDonald's Columbus 12
## 14 McDonald's Minneapolis 12
## 15 McDonald's Oklahoma City 12
restaurantes_por_franquicia_ciudad_plot<-ggplot(head(restaurantes_por_franquicia_ciudad,15), aes(x = reorder(name,-Quantity), y = Quantity, fill=city)) +
geom_col(position=) +
scale_fill_tableau("Tableau 20") +
labs(title = "Franquicias más populares en EU por franquicia y ciudad", x = "Franquicia", y = "Número de restaurantes") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
restaurantes_por_franquicia_ciudad_plot
write.csv(head(restaurantes_por_franquicia_ciudad,15), "E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_franquicia_ciudad.csv", row.names = TRUE)
ggsave("E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/restaurantes_por_franquicia_ciudad_plot.png", plot = restaurantes_por_franquicia_ciudad_plot, width = 8, height = 6, dpi = 300)
#---------------Análisis inicial variables economicas---------------------
# Datos del ingreso medio en E.U. por ciudad al igual que indices de pobreza
#Análisis con datos extraídos desde la base de datos de EU, se necesita un API de acceso
income_data <- get_acs(
geography = "place", # "place" refers to cities
variables = c("B19013_001", "B17001_002"),
# B19013_001 es el nombre para la consulta de ingreso medio, B17001_002 es la tasa de pobreza
year = 2021, # Specify the year
survey = "acs5", # 5-year ACS data
output = "wide" # Wide format for easier viewing
)
## Getting data from the 2017-2021 5-year ACS
## Warning: • You have not set a Census API key. Users without a key are limited to 500
## queries per day and may experience performance limitations.
## ℹ For best results, get a Census API key at
## http://api.census.gov/data/key_signup.html and then supply the key to the
## `census_api_key()` function to use it throughout your tidycensus session.
## This warning is displayed once per session.
#Guardaremos esta base de datos en un cvs, ya que sin un API de autorizacion,
#Sólo se tiene una cantidad limitada de consultas diarias de los censos de EUA
write.csv(income_data, "E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/income_data_US.csv", row.names = TRUE)
incomedata_medianincome_arranged<-income_data %>% arrange(desc(B19013_001E))
incomedata_medianincome_arranged
## # A tibble: 31,908 × 6
## GEOID NAME B19013_001E B19013_001M B17001_002E B17001_002M
## <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 0133544 Hatton CDP, Alabama 250001 NA 0 13
## 2 0600618 Alamo CDP, California 250001 NA 487 275
## 3 0603092 Atherton town, Calif… 250001 NA 225 101
## 4 0610301 Camino Tassajara CDP… 250001 NA 457 338
## 5 0622587 Emerald Lake Hills C… 250001 NA 54 52
## 6 0630028 Glen Ellen CDP, Cali… 250001 NA 299 378
## 7 0633518 Hidden Hills city, C… 250001 NA 185 155
## 8 0633632 Highlands CDP, Calif… 250001 NA 131 89
## 9 0633798 Hillsborough town, C… 250001 NA 269 144
## 10 0639735 Lake Sherwood CDP, C… 250001 NA 45 41
## # ℹ 31,898 more rows
mean_medianincome_US<-mean(income_data$B19013_001E, na.rm=TRUE)
max_medianincome_US<-max(income_data$B19013_001E, na.rm=TRUE)
min_medianincome_US<-min(income_data$B19013_001E, na.rm=TRUE)
cat("En Estados Unidos la ciudad con el ingreso medio más alto es de",max_medianincome_US,"USD, la ciudad con el ingreso medio más bajo es de",min_medianincome_US,"USD y la media de ingreso a través del pais es de",mean_medianincome_US," USD.")
## En Estados Unidos la ciudad con el ingreso medio más alto es de 250001 USD, la ciudad con el ingreso medio más bajo es de 2499 USD y la media de ingreso a través del pais es de 65046.65 USD.
cat("Estos datos con una desviacion estandar en USD de ",sd(income_data$B19013_001E,na.rm=TRUE))
## Estos datos con una desviacion estandar en USD de 33756.88
#Adjuntar datos de las ciudades y sus ingresos medios, con la base de datos
#de restaurantes por ciudad
restaurantes_df$Median_income<-NA
restaurantes_df$Poberty_rate<-NA
r=0
#Utilizar funcion de grepl para asociar la ciudad dentro de nuestro df, con el
#nombre de la ciudad dentro del income data de EU, a su vez, también asociar el
#estado de nuestro df con el nombre del estado del income data de EU.
#Asignar el valor correspondiente de su median_income y su poverty_rate a nuestra df
for (i in seq.default(1,nrow(restaurantes_df))){
r=which(grepl(restaurantes_df$city[i], income_data$NAME)&grepl(restaurantes_df$state[i], income_data$NAME))
restaurantes_df$Median_income[i]=income_data$B19013_001E[r[1]]
restaurantes_df$Poberty_rate[i]=income_data$B17001_002E[r[1]]
}
write.csv(restaurantes_df, "E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/datafini_fastfood_restaurants_incomedata.csv", row.names = TRUE)
#---------------Análisis economico inicial restaurantes df----------------------
restaurantes_median_income_df<-read.csv("E:/Computo cientifico/Proyecto Parcial 1/Codigos y presentacion/datafini_fastfood_restaurants_incomedata.csv",
stringsAsFactors = FALSE, fileEncoding = "UTF-8")
restaurantes_por_ciudad_median_income<-restaurantes_median_income_df %>% group_by(city,Median_income) %>%
summarise(Number=n(),Income_median=mean(Median_income,na.rm=TRUE)) %>% arrange(desc(Number))
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
head(restaurantes_por_ciudad_median_income,20)
## # A tibble: 20 × 4
## # Groups: city [20]
## city Median_income Number Income_median
## <chr> <int> <int> <dbl>
## 1 Houston 56019 106 56019
## 2 Las Vegas 61356 81 61356
## 3 Phoenix 64927 77 64927
## 4 Orlando 58968 65 58968
## 5 Los Angeles 54629 64 54629
## 6 Dallas 58231 61 58231
## 7 Miami 47860 60 47860
## 8 Chicago 65781 57 65781
## 9 Columbus 58575 56 58575
## 10 San Antonio 55084 54 55084
## 11 Philadelphia 51285 53 51285
## 12 San Diego 83720 47 83720
## 13 Atlanta 69164 42 69164
## 14 Denver 78177 42 78177
## 15 Louisville 58357 42 58357
## 16 Tucson 101821 41 101821
## 17 Brooklyn NA 40 NaN
## 18 Indianapolis 54321 40 54321
## 19 Oklahoma City 59679 40 59679
## 20 Minneapolis 70099 38 70099
mean_medianincome_top20cities<-mean(head(restaurantes_por_ciudad_median_income$Median_income,20),na.rm=TRUE)
max_medianincome_top20cities<-max(head(restaurantes_por_ciudad_median_income$Median_income,20),na.rm=TRUE)
min_medianincome_top20cities<-min(head(restaurantes_por_ciudad_median_income$Median_income,20),na.rm=TRUE)
cat("En el top 20 de ciudades con más restaurantes de Fast Food el de ingreso medio mas alto es de",max_medianincome_top20cities,"USD, la ciudad con el ingreso medio más bajo es de",min_medianincome_top20cities,"USD y la media de ingreso a través estas ciudades es de",mean_medianincome_top20cities," USD.")
## En el top 20 de ciudades con más restaurantes de Fast Food el de ingreso medio mas alto es de 101821 USD, la ciudad con el ingreso medio más bajo es de 47860 USD y la media de ingreso a través estas ciudades es de 63581.74 USD.
cat("Estos datos con una desviacion estandar en USD de ",sd(head(restaurantes_por_ciudad_median_income$Median_income,20),na.rm=TRUE))
## Estos datos con una desviacion estandar en USD de 12860.93