library(ggplot2)
library(dplyr)
library(lubridate)
Gifts
account= read.csv("account_id_data.csv",sep=',')
#Dandoles el formato Date a la fecha de nacimiento y de incripción:
account <- account %>% mutate(date_of_birth = as.Date(date_of_birth,"%Y-%m-%d"),
original_recruitment_date=as.Date(original_recruitment_date,"%Y-%m-%d"))
#Dimensión del dataframe:
dim(account)
## [1] 9672 5
#Una rápida observación de las características de las variables:
str(account)
## 'data.frame': 9672 obs. of 5 variables:
## $ account_id : int 3000336 3000549 3000610 3003613 3004202 3004223 3004239 3004241 3004322 3004389 ...
## $ date_of_birth : Date, format: "1955-07-08" "1967-02-11" ...
## $ original_recruitment_date: Date, format: "2006-05-12" "1999-05-20" ...
## $ recruitment_channel : chr "apartado_correos" "apartado_correos" "web" "apartado_correos" ...
## $ gender : chr "mujer" "hombre" "mujer" "mujer" ...
head(account)
## account_id date_of_birth original_recruitment_date recruitment_channel gender
## 1 3000336 1955-07-08 2006-05-12 apartado_correos mujer
## 2 3000549 1967-02-11 1999-05-20 apartado_correos hombre
## 3 3000610 1975-06-08 2007-04-13 web mujer
## 4 3003613 1966-03-05 1984-01-01 apartado_correos mujer
## 5 3004202 1978-03-01 1999-05-20 web hombre
## 6 3004223 1970-10-28 2000-03-28 web hombre
Account_id_data
gifts= read.csv("gifts.csv",sep=',')
gifts$payment_date <- as.Date(gifts$payment_date, "%Y-%m-%d")
dim(gifts)
## [1] 102551 6
str(gifts)
## 'data.frame': 102551 obs. of 6 variables:
## $ gift_id : int 27132848 27133296 27133300 27133306 27133519 27133747 27134198 27134413 27134417 27134867 ...
## $ account_id : int 3481181 3356658 3749018 3594961 3545518 4138479 3218844 3584201 3841629 4109138 ...
## $ payment_date : Date, format: "2016-01-01" "2016-01-01" ...
## $ payment_amount: num 6 12 12 50 20 6.01 40 3 50 30 ...
## $ gift_type : chr "Cuotas" "Cuotas" "Cuotas" "Cuotas" ...
## $ frequency : chr "Mensual" "Mensual" "Mensual" "Mensual" ...
head(gifts)
## gift_id account_id payment_date payment_amount gift_type frequency
## 1 27132848 3481181 2016-01-01 6.00 Cuotas Mensual
## 2 27133296 3356658 2016-01-01 12.00 Cuotas Mensual
## 3 27133300 3749018 2016-01-01 12.00 Cuotas Mensual
## 4 27133306 3594961 2016-01-01 50.00 Cuotas Mensual
## 5 27133519 3545518 2016-01-01 20.00 Cuotas Mensual
## 6 27133747 4138479 2016-01-01 6.01 Cuotas Mensual
gifts <- gifts %>% mutate(mes= format(payment_date,"%m"),
año = format(payment_date, "%Y"))
#Haciendo una agrupación por mes:
donacion_mes_2016 <- gifts %>% filter(año==2016) %>% group_by(mes) %>%
summarise(n_donaciones=n(),importe_medio=mean(payment_amount,na.rm= T))
donacion_mes_2016
## # A tibble: 12 x 3
## mes n_donaciones importe_medio
## <chr> <int> <dbl>
## 1 01 8188 19.0
## 2 02 8126 18.1
## 3 03 8276 17.3
## 4 04 9114 16.2
## 5 05 8691 17.5
## 6 06 8643 18.5
## 7 07 8696 17.7
## 8 08 8543 17.2
## 9 09 8568 17.5
## 10 10 8611 17.7
## 11 11 8496 17.6
## 12 12 8599 20.8
El mes con mayor número de aportes fue en marzo y el importe medio
fue de 17.32 euros
as.Date(quantile(as.numeric(account$original_recruitment_date),na.rm= T), origin ="1970-01-01")
## 0% 25% 50% 75% 100%
## "1963-01-01" "2002-10-07" "2006-04-19" "2013-09-19" "2016-12-22"
#Aportes por sexo
table(account$gender)
##
## hombre indeterminado mujer
## 4382 164 5126
donativocuota <- gifts %>% filter(gift_type=="Cuotas")
donativocuota$mes <- as.factor(donativocuota$mes)
donativoscuotas_union <- donativocuota %>% inner_join(account,by="account_id")
donativoscuotas_union_groupby <- donativoscuotas_union %>% group_by(mes,recruitment_channel) %>%
summarise(total_cuotas=sum(payment_amount))
donativoscuotas_union_groupby
## # A tibble: 72 x 3
## # Groups: mes [12]
## mes recruitment_channel total_cuotas
## <fct> <chr> <dbl>
## 1 01 apartado_correos 59586.
## 2 01 cara_a_cara 18313.
## 3 01 llamada 20432.
## 4 01 otros 370.
## 5 01 puerta_a_puerta 28593.
## 6 01 web 15348.
## 7 02 apartado_correos 55749.
## 8 02 cara_a_cara 18639.
## 9 02 llamada 19368.
## 10 02 otros 397.
## # ... with 62 more rows
ggplot(donativoscuotas_union_groupby,aes(mes,total_cuotas))+ geom_point() + facet_wrap(~ recruitment_channel)
Presenta un total de cuota por llamada mayor en diciembre
donativoscuotas_union_mujer <- donativoscuotas_union %>% filter(gender=="mujer")
donativoscuotas_union_mujer <- donativoscuotas_union_mujer %>%
filter (!is.na(payment_date),!is.na(original_recruitment_date))
donativoscuotas_union_mujer<- donativoscuotas_union_mujer %>%
mutate(años_antiguedad = interval(original_recruitment_date,payment_date) %/% years(1))
donativoscuotas_union_mujer<- donativoscuotas_union_mujer %>%
mutate(antiguedad=case_when(años_antiguedad<1 ~"<1",
años_antiguedad>=1 & años_antiguedad<3 ~ "1_3",
años_antiguedad>=3 & años_antiguedad<5 ~ "3_5",
TRUE ~ ">5"))
donativoscuotas_union_mujer_antiguedadcuotamedia <- donativoscuotas_union_mujer %>%
group_by(antiguedad,año,account_id) %>% summarize(cuota_anualizada=sum(payment_amount)) %>%
group_by(antiguedad) %>% summarise(couta_media=mean(cuota_anualizada,na.rm=T))
donativoscuotas_union_mujer_antiguedadcuotamedia
## # A tibble: 4 x 2
## antiguedad couta_media
## <chr> <dbl>
## 1 <1 93.0
## 2 >5 177.
## 3 1_3 111.
## 4 3_5 101.
Los que tienen una antiguedad mayor a los 5 años tienen la mejor de couta anual media es de 100.92 euros.
#Averiguando la aportación media de las aportantes femeninas con antiguedad mayor de 5 años como socias de acuerdo al canal de reclutamiento:
#Haciendo un groupby por recruitment channel y por account_id:
donantes_viejos <- donativoscuotas_union_mujer %>% filter(antiguedad==">5")
donantes_viejos_recruitmentchannel<- donantes_viejos %>%
group_by(año,recruitment_channel,account_id) %>% summarise(cuota_anualizada=sum(payment_amount)) %>%
group_by(recruitment_channel) %>% summarise(cuota_media=mean(cuota_anualizada,na.rm=T))
donantes_viejos_recruitmentchannel
## # A tibble: 6 x 2
## recruitment_channel cuota_media
## <chr> <dbl>
## 1 apartado_correos 206.
## 2 cara_a_cara 130.
## 3 llamada 144.
## 4 otros 168.
## 5 puerta_a_puerta 150.
## 6 web 225.
La cuota anual más alta viene a ser de aquellos inscritos por la internet, cuya cuota media es de 226.79 euros.
cuotasmenores_rtc<-donativoscuotas_union %>% group_by(año,recruitment_channel,account_id) %>%
summarise(cuota_anualizada=sum(payment_amount)) %>% filter(cuota_anualizada<500) %>%
group_by(recruitment_channel) %>% summarise(total_cuotas=cuota_anualizada)
ggplot(cuotasmenores_rtc,aes(recruitment_channel,total_cuotas))+ geom_boxplot()
Se apostaria en primer lugar por correos y luego por la web