## [1] "Using direct authentication"
### Leo la base de nombres y apodos
apodos <- read_delim("C:/Users/20389047504/Desktop/BACKUP/Lucio/Proyecto 2023/Influenciadores/Match Nombres/Hipocoristicos (1).csv", delim = ";")
apodos[is.na(apodos)] <- "NINGUNNOMBRE"
### Vamos a leer la base del listado de nombres
nombres <- read_csv("C:/Users/20389047504/Desktop/BACKUP/Lucio/Proyecto 2023/Influenciadores/Match Nombres/Listado nombres (1).csv")
### Filtro los que tienen el sexo femenino solamente
nombres_hombres <- nombres[nombres$sexo=="M",]
nombres_hombres <- nombres_hombres[nchar(nombres_hombres$nombre)>2,]
nombres <- nombres[nombres$sexo=="F",]
nombres <- nombres[nchar(nombres$nombre)>2,]
### funcion que encuentra nombres y apodos
#### En primer lugar vamos a buscar las abreviaciones dentro del "Name", "Screen-Name"
filtro_nombres <- function(path){
base <- path
base$posible_nombre <- ""
for (j in 2:ncol(apodos)){
for (i in 1:nrow(apodos)){
abrev <- grepl(paste0("\\b",apodos[i,j],"\\b"), base$name, ignore.case = T)
if(sum(abrev)>0){
base$posible_nombre[abrev] <- paste(base$posible_nombre[abrev],apodos[i,1])
}
}
}
### Una vez que encontré los apodos, vamos a trabajar en localizar los nombres
### Lo hago de a partes sino esta funcion se rompe al ser muchos
s <- grepl(paste(nombres$nombre_match[1:2000],collapse = "|"), base$name, ignore.case = T)
s2 <- grepl(paste(nombres$nombre_match[2001:4500],collapse = "|"), base$name, ignore.case = T)
s3 <- grepl(paste(nombres$nombre_match[4501:6799],collapse = "|"), base$name, ignore.case = T)
### Encuentro en que usuarios se encontro un nombre al menos
base_s <- base[s,]
base_s2 <- base[s2,]
base_s3 <- base[s3,]
### Junto las 3 bases y saco duplicados
df <- bind_rows(base_s,base_s2,base_s3)
df_names <- df[!duplicated(df),]
# Tengo bajo el "NAME" a cuántos usuarios mujeres encontro
### Hacemos el mismo ejercicio para los screen_names
s <- grepl(paste(nombres$nombre_match[1:2000],collapse = "|"), base$screen_name, ignore.case = T)
s2 <- grepl(paste(nombres$nombre_match[2001:4500],collapse = "|"), base$screen_name, ignore.case = T)
s3 <- grepl(paste(nombres$nombre_match[4501:6799],collapse = "|"), base$screen_name, ignore.case = T)
base_s <- base[s,]
base_s2 <- base[s2,]
base_s3 <- base[s3,]
df <- bind_rows(base_s,base_s2,base_s3)
df_screen_names <- df[!duplicated(df),]
### Vamos a aplicar el filtro de nombres en la columna de posible nombre que encontro mediante el apodo
apod1 <- grepl(paste(nombres$nombre_match[1:2000],collapse = "|"), base$posible_nombre, ignore.case = T)
apod2 <- grepl(paste(nombres$nombre_match[2001:4500],collapse = "|"), base$posible_nombre, ignore.case = T)
apod3 <- grepl(paste(nombres$nombre_match[4501:6799],collapse = "|"), base$posible_nombre, ignore.case = T)
base_apod1 <- base[apod1,]
base_apod2 <- base[apod2,]
base_apod3 <- base[apod3,]
df_apod <- bind_rows(base_apod1,base_apod2,base_apod3)
df_apods <- df_apod[!duplicated(df_apod),]
### Junto las tres bases
df_total_ <- bind_rows(df_names,df_screen_names,df_apods)
return(df_total_)
}
filtro_hombres <- function(path){
base <- path
### Lo hago de a partes sino esta funci昼㸳n se rompe al ser muchos
s <- grepl(paste(nombres_hombres$nombre_match[1:2000],collapse = "|"), base$name, ignore.case = T)
s2 <- grepl(paste(nombres_hombres$nombre_match[2001:4500],collapse = "|"), base$name, ignore.case = T)
s3 <- grepl(paste(nombres_hombres$nombre_match[4501:6799],collapse = "|"), base$name, ignore.case = T)
### Encuentro en que usuarios se encontr昼㸳 un nombre al menos
base_s <- base[s,]
base_s2 <- base[s2,]
base_s3 <- base[s3,]
### Junto las 3 bases y saco duplicados
df <- bind_rows(base_s,base_s2,base_s3)
df_names <- df[!duplicated(df),]
# Tengo bajo el "NAME" a cu攼㸱ntos usuarios mujeres encontr昼㸳
### Hacemos el mismo ejercicio para los screen_names
s <- grepl(paste(nombres_hombres$nombre_match[1:2000],collapse = "|"), base$screen_name, ignore.case = T)
s2 <- grepl(paste(nombres_hombres$nombre_match[2001:4500],collapse = "|"), base$screen_name, ignore.case = T)
s3 <- grepl(paste(nombres_hombres$nombre_match[4501:6799],collapse = "|"), base$screen_name, ignore.case = T)
base_s <- base[s,]
base_s2 <- base[s2,]
base_s3 <- base[s3,]
df <- bind_rows(base_s,base_s2,base_s3)
df_screen_names <- df[!duplicated(df),]
### Junto las bases
df_total_ <- bind_rows(df_names,df_screen_names)
return(df_total_)
}
head(nombres,5)
## # A tibble: 5 x 3
## nombre sexo nombre_match
## <chr> <chr> <chr>
## 1 Abelina F "\\bAbelina\\b"
## 2 Abi F "\\bAbi\\b"
## 3 Abigail F "\\bAbigail\\b"
## 4 Abril F "\\bAbril\\b"
## 5 Ada F "\\bAda\\b"
head(apodos,5)
## # A tibble: 5 x 19
## nombre abreviacion1 abreviacion2 abreviacion3 abreviacion4 abreviacion5
## <chr> <chr> <chr> <chr> <chr> <chr>
## 1 "Adal~ adal Dalber Beto Betito NINGUNNOMBRE
## 2 "Adol~ Ado adolf Fito NINGUNNOMBRE NINGUNNOMBRE
## 3 "Adri~ Adri Adria Adriano NINGUNNOMBRE NINGUNNOMBRE
## 4 "Agus~ Agu Agus Guti Cucho TantIn
## 5 "Albe~ Beto Berto BertIn Al Tito
## # ... with 13 more variables: abreviacion6 <chr>, abreviacion7 <chr>,
## # abreviacion8 <chr>, abreviacion9 <chr>, abreviacion10 <chr>,
## # abreviacion11 <chr>, abreviacion12 <chr>, abreviacion13 <chr>,
## # abreviacion14 <chr>, abreviacion15 <chr>, abreviacion16 <chr>,
## # abreviacion17 <chr>, abreviacion18 <chr>
### Para tener una idea de lo que contienen cada una de las bases, hacemos un head de cada uno de ellas.. Donde se nos muestra la parte superior y algunas observaciones
head(seguid_PRO)
## # A tibble: 6 x 2
## user_id count
## <chr> <int>
## 1 1000000720098209792 1
## 2 1000001110050996224 3
## 3 1000003175393517569 4
## 4 1000003309409849344 1
## 5 1000004748177805312 1
## 6 1000005486354292736 3
print("La columna user_id nos dice que usuario sigue a cuentas pro, y el count es el total de cuentas que sigue. Por ejemplo el usuario 1000000720098209792 sigue a una cuenta PRO")
## [1] "La columna user_id nos dice que usuario sigue a cuentas pro, y el count es el total de cuentas que sigue. Por ejemplo el usuario 1000000720098209792 sigue a una cuenta PRO"
head(seguid_K)
## # A tibble: 6 x 2
## user_id count
## <chr> <int>
## 1 1000000070211817472 2
## 2 1000000269135106049 1
## 3 1000001468164952064 1
## 4 1000001696406392833 3
## 5 1000004201345413120 6
## 6 1000004930747404288 36
head(kws_politica_K)
## # A tibble: 6 x 2
## Keyword Excluir
## <chr> <chr>
## 1 kirchnerista Excluir anti-
## 2 nestor Excluir anti-
## 3 nestor Excluir anti-
## 4 cristina Excluir anti-
## 5 kirchner Excluir anti-
## 6 peronista Excluir anti-
### Cargo la funcion que realiza el filtro de tendencia politica por Bio y seguidores y me arregla la base de los tabs y enters
una_base_armada <- function(basesita){
base <- basesita
base$description <- as.character(base$description)
base[is.na(base)] <- ""
base$tag_politica_K <- ""
s <- grepl("2600|270C",base$description,ignore.case = T)
celdas_tags <- which(s, arr.ind = TRUE)
if(length(celdas_tags)>0){
base$tag_politica_K[celdas_tags] <- paste(base$tag_politica_K[celdas_tags],"K",sep = ",")
}
s <- grepl("2600|270C",base$name,ignore.case = T)
celdas_tags <- which(s, arr.ind = TRUE)
if(length(celdas_tags)>0){
base$tag_politica_K[celdas_tags] <- paste(base$tag_politica_K[celdas_tags],"K",sep = ",")
}
for(i in 1:nrow(kws_politica_K)){
if (i==1 | i==2| i==3| i==4| i==5| i==6| i==12 | i==28){
s <- grepl(kws_politica_K$Keyword[i],base$description,ignore.case = T)
not <- grepl(paste("anti",kws_politica_K$Keyword[i],"|anti ",kws_politica_K$Keyword[i],"|anti-",kws_politica_K$Keyword[i], sep=""),base$description,ignore.case = T)
celdas_tags <- which(s, arr.ind = TRUE)
not_celdas <- which(not, arr.ind = TRUE)
celdas_tags <- celdas_tags[!(celdas_tags %in% not_celdas)]
if(length(celdas_tags)>0){
base$tag_politica_K[celdas_tags] <- paste(base$tag_politica_K[celdas_tags],"K",sep = ",")
}
#print(i)
}
if ( i==7| i==8){
s <- grepl(kws_politica_K$Keyword[i],base$description,ignore.case = T)
not <- grepl(paste("antiperon","|anti peron","|anti-peron", sep=""),base$description,ignore.case = T)
celdas_tags <- which(s, arr.ind = TRUE)
not_celdas <- which(not, arr.ind = TRUE)
celdas_tags <- celdas_tags[!(celdas_tags %in% not_celdas)]
if(length(celdas_tags)>0){
base$tag_politica_K[celdas_tags] <- paste(base$tag_politica_K[celdas_tags],"K",sep = ",")
}
#print(i)
}
if(i!=1 & i!=2 & i!=3 & i!=4 & i!=5 & i!=6 & i!=7 & i!=8 & i!=12 & i!=28){
s <- grepl(kws_politica_K$Keyword[i],base$description,ignore.case = T)
celdas_tags <- which(s, arr.ind = TRUE)
if(length(celdas_tags)>0){
base$tag_politica_K[celdas_tags] <- paste(base$tag_politica_K[celdas_tags],"K",sep = ",")
}
#print(i)
}
}
base <- base[base$tag_politica_K=="",]
base <- base[,1:12]
#### Para ver los correntinos que siguen cuentas K .
base=merge(x=base,y=seguid_K,by="user_id",all.x = T)
colnames(base)[13] <- "count_cuentas_k2"
#### Cuentas Pro
base=merge(x=base,y=seguid_PRO,by="user_id",all.x = T)
colnames(base)[14] <- "count_cuentas_pro"
base[is.na(base)] <- 0
base$tendencia_politica <- "Sin Tendencia Politica"
for (i in 1:nrow(base)){
if (base$count_cuentas_k2[i]>2 & base$count_cuentas_pro[i]==0){
base$tendencia_politica[i] <- "K"
}
if (base$count_cuentas_pro[i]>2 & base$count_cuentas_k2[i]==0){
base$tendencia_politica[i] <- "PRO"
}
}
base <- base[base$tendencia_politica!="K",]
base <- base[,1:12]
base$description=gsub("\r\n","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\t","",base$description)
base$description=gsub("\t","",base$description)
base$description=gsub("\t","",base$description)
base$description=gsub("\t","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\r\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\n","",base$description)
base$description=gsub("\t","",base$description)
base$description=gsub("\t","",base$description)
base$description=gsub("\t","",base$description)
base$description=gsub("\t","",base$description)
base$name=gsub("\r\n","",base$name)
base$name=gsub("\r\n","",base$name)
base$name=gsub("\r\n","",base$name)
base$name=gsub("\r\n","",base$name)
base$name=gsub("\r\n","",base$name)
base$name=gsub("\n","",base$name)
base$name=gsub("\n","",base$name)
base$name=gsub("\n","",base$name)
base$name=gsub("\n","",base$name)
base$name=gsub("\n","",base$name)
base$name=gsub("\t","",base$name)
base$name=gsub("\t","",base$name)
base$name=gsub("\t","",base$name)
base$name=gsub("\t","",base$name)
base$location=gsub("\r\n","",base$location)
base$location=gsub("\r\n","",base$location)
base$location=gsub("\r\n","",base$location)
base$location=gsub("\r\n","",base$location)
base$location=gsub("\r\n","",base$location)
base$location=gsub("\n","",base$location)
base$location=gsub("\n","",base$location)
base$location=gsub("\n","",base$location)
base$location=gsub("\n","",base$location)
base$location=gsub("\n","",base$location)
base$location=gsub("\t","",base$location)
base$location=gsub("\t","",base$location)
base$location=gsub("\t","",base$location)
base$location=gsub("\t","",base$location)
base$screen_name=gsub("\r\n","",base$screen_name)
base$screen_name=gsub("\r\n","",base$screen_name)
base$screen_name=gsub("\r\n","",base$screen_name)
base$screen_name=gsub("\r\n","",base$screen_name)
base$screen_name=gsub("\r\n","",base$screen_name)
base$screen_name=gsub("\n","",base$screen_name)
base$screen_name=gsub("\n","",base$screen_name)
base$screen_name=gsub("\n","",base$screen_name)
base$screen_name=gsub("\n","",base$screen_name)
base$screen_name=gsub("\n","",base$screen_name)
base$screen_name=gsub("\t","",base$screen_name)
base$screen_name=gsub("\t","",base$screen_name)
base$screen_name=gsub("\t","",base$screen_name)
base$screen_name=gsub("\t","",base$screen_name)
return(base)
}
En un primer paso se descargo desde SySomos personas de Cordoba con el piso de followers de la localidad con menor cantidad (San Justo – 1235). Se obtuvo alrededor de 2.5 millones de contenidos.
files <- list.files("C:/Users/20389047504/Desktop/BACKUP/Lucio/Proyecto 2023/Influenciadores/Cordoba/Archivo")
prueba <- data.frame()
prueba2 <- data.frame()
for (i in 1:length(files)){
file <- paste0("C:/Users/20389047504/Desktop/BACKUP/Lucio/Proyecto 2023/Influenciadores/Cordoba/Archivo/",files[i])
x_utf16 <- readBin(file, "raw", n = file.size(file)) ## Leo las lineas del csv
x_utf8 <- iconv(list(x_utf16), from = "UCS-2LE", to = "UTF-8", toRaw = TRUE)[[1]] # Transformo los caracteres de ucs-2 a UTF-8
cordoba2 <- readr::read_delim(x_utf8,delim="\t", col_types = cols(
`Twitter Id` = col_character()
)) ## Voy leyendo archivo a archivo
## Lo hago de esta forma porque desde SySomos se descargan con codificacion UCS2-LE
# Por lo tanto si se lee de la manera tradicional con read_delim se rompe, ya que lee los archivos en codificacion UTF-8
prueba <- bind_rows(prueba,cordoba2) ## Voy uniendo los archivos que va leyendo en uno común
}
print(paste("Cantidad de contenidos",nrow(prueba)))
## [1] "Cantidad de contenidos 2434188"
head(prueba,5)
## Date Headline
## 1 11-Aug-2020 01:01PM NA
## 2 11-Aug-2020 01:01PM NA
## 3 11-Aug-2020 01:01PM NA
## 4 11-Aug-2020 01:00PM NA
## 5 11-Aug-2020 01:00PM NA
## URL Opening Text
## 1 https://twitter.com/jhop6s/statuses/1293215958476050432 NA
## 2 https://twitter.com/Turfpremium/statuses/1293215945440268288 NA
## 3 https://twitter.com/nqn_noticias/statuses/1293215860103020546 NA
## 4 https://twitter.com/debisolcarp/statuses/1293215793447084038 NA
## 5 https://twitter.com/ComunidadCamion/statuses/1293215678300934145 NA
## Hit Sentence
## 1 Se construirá un concierto con una capacidad de 42k por la demanda que tienen los concierto de bangtan, wow ifisskoedb mis varones merecen lo mejor
## 2 España comunica 1.418 casos de coronavirus en un día y 64 fallecidos en la última semana - RT https://t.co/m5WSHf3tv3
## 3 Importante registro de un huillín en el Río Limay mediante el uso de cámaras trampa https://t.co/WpduPMLgGJ
## 4 Ustedes también le echan un poquito de agua a la cajita de puré de tomate cuando se está por terminar?
## 5 #SeguridadVial #Vialidad #Precaución #RutasBonaerenses MInfraPBA #QuedateEnCasa #CuidarteEsCuidarnos https://t.co/PXuOIbLgQn
## Source Influencer Country Subregion Language Reach
## 1 Twitter @jhop6s Argentina NA Spanish / Castilian 3109
## 2 Twitter @turfpremium Argentina NA Spanish / Castilian 3458
## 3 Twitter @nqn_noticias Argentina NA Spanish / Castilian 3166
## 4 Twitter @debisolcarp Argentina NA Spanish / Castilian 3304
## 5 Twitter @comunidadcamion Argentina NA Spanish / Castilian 3302
## Desktop Reach Mobile Reach Twitter Social Echo Facebook Social Echo
## 1 0 0 NA NA
## 2 0 0 NA NA
## 3 0 0 NA NA
## 4 0 0 NA NA
## 5 0 0 NA NA
## Reddit Social Echo National Viewership Engagement AVE Sentiment
## 1 NA 0 NA 28.76 Positive
## 2 NA 0 NA 31.99 Neutral
## 3 NA 0 NA 29.29 Negative
## 4 NA 0 NA 30.56 Negative
## 5 NA 0 NA 30.54 Neutral
## Key Phrases Input Name Keywords
## 1 concierto de bangtan Adhoc Search Export NA
## 2 casos de coronavirus Adhoc Search Export NA
## 3 Importante registro,uso de cámaras trampa Adhoc Search Export NA
## 4 cajita de puré de tomate,poquito de agua Adhoc Search Export NA
## 5 <NA> Adhoc Search Export NA
## Twitter Authority Tweet Id Twitter Id
## 1 7 '1293215958476050432' 4847311202
## 2 7 '1293215945440268288' 1024664072
## 3 7 '1293215860103020546' 816459143401918464
## 4 7 '1293215793447084038' 1206960632463011847
## 5 7 '1293215678300934145' 1107733136
## Twitter Client
## 1 Twitter for iPhone
## 2 Twitter Web App
## 3 NoticiasNqn
## 4 Twitter for Android
## 5 Fabricas
## Twitter Screen Name
## 1 <U+0001D42C><U+0001D42D><U+0001D41E><U+0001D41F><U+0001D41F> 7
## 2 Turf Premium
## 3 NoticiasNQN.com.ar
## 4 <U+0001F133><U+0001F134><U+0001F131><U+0001F138> <U+0001F142><U+0001F13E><U+0001F13B> <U+26AA><U+0001F534><U+26AA>
## 5 Comunidad Camion #YoTeCuidoMeCuido
## Twitter User Profile Url
## 1 https://twitter.com/jhop6s
## 2 https://twitter.com/Turfpremium
## 3 https://twitter.com/nqn_noticias
## 4 https://twitter.com/debisolcarp
## 5 https://twitter.com/ComunidadCamion
## Twitter Bio
## 1 <U+2726> : <U+CCAD><U+C0C9> <U+060C> <U+CC9C><U+AD6D> <U+060C> <U+AE30><U+C068> <U+2015> <U+0001D5F5><U+0001D5FC><U+0001D5EF><U+0001D5F6>. <U+0001F52D><U+2661>
## 2 Turf de Argentina, ver Resultados al instante Programas y Estadisticas Gratis\\nFacebook: https://www.facebook.com/Estadisticas-Spc-Turfpremium-553320344826873/
## 3 Noticias de #Neuquén y la región actualizado a toda hora. Facebook http://ow.ly/2vLd30bKefJ Youtube http://bit.ly/2pNyBWi #Noticias\\nredaccionnqn@gmail.com
## 4 <U+0001F17C><U+0001F174><U+0001F17D><U+0001F182><U+0001F170><U+0001F179><U+0001F174> <U+0001F173><U+0001F178><U+0001F181><U+0001F174><U+0001F172><U+0001F183><U+0001F17E>: <U+0001F17D><U+0001F17E>, <U+0001F176><U+0001F181><U+0001F170><U+0001F172><U+0001F178><U+0001F170><U+0001F182>! El mejor estado del ser humano no es estar enamorado, es estar tranquilo.
## 5 Del @GrpComunidad ! Transito y Camiones en Argentina y el Mundo.
## Twitter Followers Twitter Following Document Tags Alternate Date Format Time
## 1 3109 474 NA <NA> NA
## 2 3458 872 NA <NA> NA
## 3 3166 1372 NA <NA> NA
## 4 3304 3065 NA <NA> NA
## 5 3302 57 NA <NA> NA
## State City
## 1 <NA> <NA>
## 2 <NA> <NA>
## 3 <NA> <NA>
## 4 <NA> <NA>
## 5 <NA> <NA>
cordoba <- prueba %>% select(Influencer,`Twitter Id`)
cordoba <- cordoba[!duplicated(cordoba$`Twitter Id`),]
cordoba_tw <- lookup_users(cordoba$`Twitter Id`, token=token1)
cordoba_tw <- select(cordoba_tw,user_id,screen_name,name,description,followers_count,friends_count,statuses_count,favourites_count,location,protected,verified,profile_expanded_url)
Se sacaron duplicados y como resultado se tuvieron 21667 usuarios únicos de los cúales se encontraron por medio de la API 21001 para tener sus “Location”.
cordoba_1 <- una_base_armada(cordoba_tw)
Realizando un filtro de tendencia politica en BIOS y seguidores se cuenta con un final de 19935 usuarios.
Se aplico un filtro de localidades y followers obteniendo:
# Voy a separar las localidades de cordoba.
#Capital
#Colon
#Rio Cuarto
#Punilla
#San Justo
punilla <- cordoba_1[grepl("punilla",cordoba_1$location,ignore.case = T),]
san_justo <- cordoba_1[grepl("san justo",cordoba_1$location,ignore.case = T),]
colon <- cordoba_1[grepl("\\bcolon\\b|colon",cordoba_1$location,ignore.case = T) & !(grepl("bs as|buenos aires|bs. as.|bs. as",cordoba_1$location,ignore.case = T)),]
rio_cuarto <- cordoba_1[grepl("rio cuarto|rio cuarto|rio cto|rio cto",cordoba_1$location,ignore.case = T),]
cordobas_capital <- cordoba_1[!(cordoba_1$user_id %in% c(punilla$user_id,san_justo$user_id,colon$user_id,rio_cuarto$user_id)),]
cordoba_solo <- cordobas_capital[cordobas_capital$location=="Cordoba|Cordoba|cordoba|cordoba"]
cordobas_capital <- cordobas_capital[grepl("cordoba, argentina|cordoba argentina|cordoba,argentina|argentina, cordoba|argentina cordoba|argentina,cordoba|cordoba, argentina|cordoba argentina|cordoba,argentina|argentina, cordoba|argentina cordoba|argentina,cordoba|cordoba- argentina|cordoba - argentina|cordoba -argentina|cordoba- argentina|cordoba - argentina|cordoba -argentina|Cordoba, Argentina|cordoba , argentina|cordoba , arg",cordobas_capital$location,ignore.case = T) | grepl("capital",cordobas_capital$location,ignore.case = T),]
cordobas_capital <- rbind(cordobas_capital,cordoba_solo)
cordobas_capital <- cordobas_capital[!(grepl("mendoza|corrientes",cordobas_capital$location,ignore.case = T)),]
cordobas_capital <- cordobas_capital[!(grepl("marull|sampacho|luque|laborde|la falda|bs as|canals|oncativo|vcp|villa carlos paz|monte ma|alberdi|cosquin|cosquin|villa maria|villa maria|ticino|pilar|la cumbre|hernando|la carlota|cruz alta|jovita|san francisco|san fco|carlos paz|la puerta|brinkmann|tancacha|manfredi|alta gracias|malagueño|bell ville|rio segundo|rio segundo|rio tercero|rio tercer|oliva",cordobas_capital$location,ignore.case = T)),]
punilla <- punilla[punilla$followers_count > 1247,] # 2
san_justo <- san_justo[san_justo$followers_count > 1234,] # 3
colon <- colon[colon$followers_count > 4502,] # 2
rio_cuarto <- rio_cuarto[rio_cuarto$followers_count > 3199,] # 61
cordobas_capital <- cordobas_capital[cordobas_capital$followers_count > 28345,] # 104
Punilla 2
San Justo 3
Colon 2
Rio Cuarto 61
Cordoba Capital 104
A los usuarios finales se los obtiene realizando otro filtro de tendencia politica, esta vez por Tws y Retws a cuentas K y Pro, y favoritos a las mismas cuentas.
## Se realiza la siguiente funcion para cada una de las localidades en cuestion
# Se deja solamente el codigo por el hecho que tarda mucho el proceso.
#
#limpio=rio_cuarto$user_id
#final=vector()
#for (i in 1:length(limpio)){
# perfil <- lookup_users(limpio[i])
# if(perfil$protected==FALSE){
# buscando_tws <- get_timeline(
# limpio[i],
# n=2000,
# toke=token1
# )
# buscando_tws <- buscando_tws[buscando_tws$created_at > "2019-12-31",]
# buscando_tws2 <- select(buscando_tws,is_retweet,retweet_screen_name,retweet_user_id)
# buscando_tws2 <- buscando_tws2[buscando_tws2$is_retweet==T,]
# retws_k <- nrow(buscando_tws2[(buscando_tws2$retweet_user_id %in% K_NO$user_id),])
# retws_pro <- nrow(buscando_tws2[(buscando_tws2$retweet_user_id %in% PRO_NO$user_id),])
# if(!(retws_k>2 & retws_pro==0)){
# final <- c(final,limpio[i])
# }
# }
# rl <- rate_limit(token1, "statuses/user_timeline")
#
#if ( rl$remaining <= 2L) {
# Sys.sleep(888)
#}
#
#cordobas_capital <- cordobas_capital[cordobas_capital$user_id %in% final,] ## 96
#punilla <- punilla[punilla$user_id %in% final,] ## 1
#san_justo <- san_justo[san_justo$user_id %in% final,] ## 3
#colon <- colon[colon$user_id %in% final,] ## 3
#rio_cuarto <- rio_cuarto[rio_cuarto$user_id %in% final,] ## 59
### Veo el tema de los favoritos en chubut
#mpio=rio_cuarto$user_id
#nal=vector()
#r (i in 1:length(limpio)){
#favoritos <- get_favorites(
# limpio[i],
# n = 200,
# since_id = NULL,
# max_id = NULL,
# parse = TRUE,
# token = NULL
#)
#favoritos <- favoritos[favoritos$created_at > "2019-12-31",]
#favoritos <- select(favoritos,user_id,favorited_by)
#favs_K <- nrow(favoritos[(favoritos$user_id %in% K_NO$user_id),])
#favs_pro <- nrow(favoritos[(favoritos$user_id %in% PRO_NO$user_id),])
#if(!(favs_K>2 & favs_pro==0)){
# final <- c(final,limpio[i])
#}
#rl <- rate_limit(token1, "get_favorites")
### if rate limit exhausted, then wait to rate limit reset
#if ( rl$remaining == 0L) {
# Sys.sleep(888)
#}
#
#cordobas_capital <- cordobas_capital[cordobas_capital$user_id %in% final,] ## 92
#punilla <- punilla[punilla$user_id %in% final,] ## 1
#san_justo <- san_justo[san_justo$user_id %in% final,] ## 3
#colon <- colon[colon$user_id %in% final,] ## 3
#rio_cuarto <- rio_cuarto[rio_cuarto$user_id %in% final,] ## 57
Candidatos 2.0 Mujeres.
Se usa la base mencionada anteriormente, sumando a esta una base de Cordoba de usuarios que tengan entre el 1% y el 2% del total de la poblacion de followers (410K de contenidos).
cordoba <- read_csv("C:/Users/20389047504/Desktop/BACKUP/Lucio/Proyecto 2023/Influenciadores/Cordoba/Cordoba1%.csv", col_types = cols(
twitterId = col_character()
)) ## Leo la base de cordoba que se descargo desde SySomos
print(paste("Tiene",nrow(cordoba),"contenidos"))
## [1] "Tiene 408912 contenidos"
cordoba_names <- cordoba %>% select(twitterId)
cordoba_names <- cordoba_names[!duplicated(cordoba_names$twitterId),]
print(paste("Quedan un total de",nrow(cordoba_names),"usuarios únicos"))
## [1] "Quedan un total de 1564 usuarios únicos"
cordoba_names_tw <- lookup_users(cordoba_names$twitterId, token=token1)
cordoba_names_tw <- select(cordoba_names_tw,user_id,screen_name,name,description,followers_count,friends_count,statuses_count,favourites_count,location,protected,verified,profile_expanded_url)
cordoba_names_tw <- cordoba_names_tw[grepl("cordoba|cordoba|cba|cba.|rio cuarto|rio cuarto|villa carlos paz|la cumbre|la cumbresita",cordoba_names_tw$location,ignore.case = T),]
cordoba_names_tw <- una_base_armada(cordoba_names_tw)
print(paste("Realizando el filtro de localidad y tendencia politica, se tienen",nrow(cordoba_names_tw),"usuarios."))
## [1] "Realizando el filtro de localidad y tendencia politica, se tienen 52 usuarios."
Realizando el segundo paso de filtro de tendencia politica
#limpio=cordoba_names_tw$user_id
#final=vector()
#for (i in 1:length(limpio)){
# perfil <- lookup_users(limpio[i])
# if(perfil$protected==FALSE){
# buscando_tws <- get_timeline(
# limpio[i],
# n=2000,
# toke=token1
# )
# buscando_tws2 <- select(buscando_tws,is_retweet,retweet_screen_name,retweet_user_id)
# buscando_tws2 <- buscando_tws2[buscando_tws2$is_retweet==T,]
# retws_k <- nrow(buscando_tws2[(buscando_tws2$retweet_user_id %in% K_NO$user_id),])
# retws_pro <- nrow(buscando_tws2[(buscando_tws2$retweet_user_id %in% PRO_NO$user_id),])
# if(!(retws_k>2 & retws_pro==0)){
# final <- c(final,limpio[i])
# }
#
# }
# if (i%%100==0){
# Sys.sleep(900)
# }
#}
#cordoba_names_tw <- cordoba_names_tw[cordoba_names_tw$user_id %in% final,]
#
##### Veo el tema de los favoritos en Cordoba
#limpio=cordoba_names_tw$user_id
#final=vector()
#for (i in 1:length(limpio)){
# favoritos <- get_favorites(
# limpio[i],
# n = 200,
# since_id = NULL,
# max_id = NULL,
# parse = TRUE,
# token = token1
# )
# if (nrow(favoritos)>0){
# favoritos <- select(favoritos,user_id,favorited_by)
# favs_K <- nrow(favoritos[(favoritos$user_id %in% K_NO$user_id),])
# favs_pro <- nrow(favoritos[(favoritos$user_id %in% PRO_NO$user_id),])
# if(!(favs_K>2 & favs_pro==0)){
# final <- c(final,limpio[i])
# }
# }
#
# if (nrow(favoritos)==0){
# final <- c(final,limpio[i])
# }
# rl <- rate_limit(token1, "get_favorites")
# ## if rate limit exhausted, then wait to rate limit reset
# if ( rl$remaining < 3) {
# #print(paste("Reseteo",as.numeric(rl$reset)))
# Sys.sleep(888)
# }
#}
#cordoba_names_tw <- cordoba_names_tw[cordoba_names_tw$user_id %in% final,]
print("Como resultado final se tienen 255 usuarios.")
## [1] "Como resultado final se tienen 255 usuarios."
Se realiza el matcheo de nombres sobre los 326 usuarios unicos de Cordoba, juntando ambas bases vistas anteriormente y sacando duplicados.
### Leo las bases de Cordoba
cordoba1 <- read_csv("C:/Users/20389047504/Desktop/BACKUP/Lucio/Proyecto 2023/Influenciadores/Cordoba/Cordoba_Total.csv")
Y posterior revision de fotos
## Leo el resultado de analizar las fotos
fotos <- read_delim("C:/Users/20389047504/Desktop/BACKUP/Lucio/Proyecto 2023/Influenciadores/Mujeres 2.0/Cordoba/CORDOBA_user-id_genero.csv", delim = ";")
fotos <- fotos[fotos$genero=="Female",]
#
#### Hago un merge
cordoba1 <- merge(x=cordoba1,y=fotos,by="user_id",all.x = T)
cordoba1[is.na(cordoba1)] <- ""
### Hago el filtro de nombre para ver cuáles faltan definir
cordoba_name <- filtro_nombres(cordoba1)
cordoba_name <- cordoba_name[!duplicated(cordoba_name$user_id),] # 53 son las mujeres mediante el filtro #de nombre
print(paste("Se matchearon",nrow(cordoba_name),"mujeres por nombre."))
## [1] "Se matchearon 53 mujeres por nombre."
##### Ahora a las personas que no encontro nada mediante nombres, vemos mediante foto
cordoba1 <- cordoba1[!(cordoba1$user_id %in% cordoba_name$user_id),]
#
cordoba_fotos <- cordoba1[cordoba1$genero=="Female",] ## 31 son los que tienen el Female mediante las
cordoba_fotos_H <- filtro_hombres(cordoba_fotos)
cordoba_fotos <- cordoba_fotos[!(cordoba_fotos$user_id %in% cordoba_fotos_H$user_id),]
mujeres_cordoba <- bind_rows(cordoba_name,cordoba_fotos)
mujeres_cordoba <- mujeres_cordoba[,1:12]
print(paste("Se matchearon",nrow(cordoba_fotos),"mujeres por foto."))
## [1] "Se matchearon 19 mujeres por foto."
#fotos de perfil
#
print(paste("Se tienen ",nrow(mujeres_cordoba)," mujeres mediante ambos filtros."))
## [1] "Se tienen 72 mujeres mediante ambos filtros."
head(cordoba_name,5)
## user_id screen_name name
## 1 x1018465549 isma_max Isma Oliva †
## 2 x1022136167481978885 rccommunitym Community Manager - Florencia Durán
## 3 x1031251009505579008 MautinoAguss Agustina<U+0001F351>
## 4 x113349101 anitacobos Ana Cobos
## 5 x131263336 Cadena3Com Cadena 3 Argentina
## description
## 1 Creador -Doy de que hablar para que no se aburran -Llegas a un cierto punto de tu vida donde hay gente esperando para verte caer-#TWD<U+2665>HP<U+26A1><U+FE0F> Ig: Ismaolivaok
## 2 Realzá el valor de tu negocio a través de la difusión de contenido en las redes sociales.Instagram: @fdcomunitym
## 3 17
## 4 Periodista. TV Host. beIN Sports USA. Cordobesa en Miami. Instagram: anita_cobos
## 5 Junto a @FMCordoba y @FMRadioPopular te acompañamos a superar este nuevo contexto. Entretenimiento y noticias para cuidar tu salud <U+0001F4FB> <U+0001F4F2> #SeguimosAdelante
## followers_count friends_count statuses_count favourites_count
## 1 36763 22539 12912 60204
## 2 4123 534 7111 8307
## 3 26597 505 4004 9032
## 4 73342 1271 17768 9005
## 5 493889 1323 239181 22011
## location protected verified
## 1 Argentina, Córdoba Capital FALSE FALSE
## 2 Río Cuarto, Argentina FALSE FALSE
## 3 Córdoba, Argentina FALSE FALSE
## 4 Miami/Córdoba FALSE TRUE
## 5 Córdoba, Argentina FALSE FALSE
## profile_expanded_url
## 1 https://www.instagram.com/ismaolivaok/
## 2
## 3 https://instagram.com/agusmautino?igshid=q4g84mr6ue4l
## 4 http://www.beinsports.tv/getbein/talent/article/2twz99u5whqy1cpixdtgmazcm/title/ana-cobos
## 5 https://www.cadena3.com/
## genero posible_nombre
## 1 Ismael
## 2
## 3
## 4 Female Ana Belen Mariana
## 5