options(repr.matrix.max.cols=8, repr.matrix.max.rows=5)
path<-"https://raw.githubusercontent.com/nmeraihi/data/master/"

Question 1#

a)#

Importer les données qc_hommes_2.csv à partir du répertoire data github dans un data frame df

df<-read.csv(paste(path,"qc_hommes_2.csv",sep = ""), sep=",")
head(df)
A data.frame: 6 × 2
agelx
<chr><int>
10 an 100000
21 an 99501
32 ans 99483
54 ans99454
65 ans99442
tail(df)
A data.frame: 6 × 2
agelx
<chr><int>
106105 ans96
107106 ans51
108107 ans26
110109 ans 6
111110 ans et plus3

b)#

Dans la colonne age, garder seulement la partie numérique. Vous devriez alors obtenir age={0,1,2 …}

df$age<-gsub("ans", "", df$age)
df$age<-gsub("an", "", df$age)

c)#

À ce df, ajouter une nouvelle colonne dx (nombre de décès entre l’âge x et x+n). Donc dx est le nombre de décès qui surviennent dans chaque intervalle d’âge au sein d’une cohorte initiale de 100 000 naissances vivantes à l’âge 0.

\[d_x=l_x -l_{x+1}\]
a<-df[-nrow(df), 2]-df[-1, 2]
a<-c(a, a[length(a)])
df$dx<-a

d)#

Calculer qx (quotient de mortalité entre l’âge x et x+n). Donc qx est probabilité qu’un individu d’âge x décède avant d’atteindre l’âge x+n.

\[q_x=\frac{d_x}{l_x}\]
df$qx<-round(df$dx/df$lx,5)
head(df)
A data.frame: 6 × 4
agelxdxqx
<chr><int><int><dbl>
10 1000004990.00499
21 99501 180.00018
32 99483 160.00016
54 99454120.00012
65 99442110.00011

e)#

Maintenant que vous avez toutes les données, on peut calculer la probabilité qu’un individu d’âge x survive jusqu’à l’âge x+n.

\[tP_x=\frac{l_{x+t}}{l_x}\]

Calculer la probabilité qu’un individu de 22 ans survive les trois prochaines années

age<-22
t<-3
p<-df[age+1+t,2]/df[age+1,2]
p
0.998192831903079
library(formattable)
Error in library(formattable): there is no package called ‘formattable’
Traceback:

1. library(formattable)
percent(p)
99.82%

Question 2#

Id=c(1,2,3,4)
Age=c(14,12,15,10)
Sex=c('F','M','M','F')
Code=c('a','b','c','d')
df1=data.frame(Id,Age)
df2=data.frame(Id,Sex,Code)

Avec les données suivantes;

df1
IdAge
1 14
2 12
3 15
4 10
df2
IdSexCode
1Fa
2Mb
3Mc
4Fd

Créer un data frame M qui fait une jointure de df1 et df2

M=merge(df1,df2,by='Id')
M
IdAgeSexCode
1 14F a
2 12M b
3 15M c
4 10F d

Question 3#

Selon un journaliste de la CNBC, le prix de l’action de Apple (AAPL) est très corrélé avec le prix de l’action de Boeing Co (BA).

Calculer la corrélation des prix Adj Close mensuels de ces deux compagnies sur la période allant du 2016-11-01 au 2017-10-01.

Indice: créer deux vecteur avec les valeurs des prix. Vous pouvez importer les données à partir de finance yahoo dans la section Historical Data avec les dates et périodes indiquées ci-haut.

path<-"https://raw.githubusercontent.com/nmeraihi/data/master/"
df_app <-read.csv(paste(path,"AAPL_month.csv",sep = ""), header = T)
df_ba <-read.csv(paste(path,"BA_month.csv",sep = ""), header = T)
a<-cbind(df_app$Adj.Close,df_ba$Adj.Close)
colnames(a)<-c("Apple", "Boeing")
rownames(a)<-seq(as.Date("2016/11/1"), by = "month", length.out = 12)
cor(a)
AppleBoeing
Apple1.0000000.872264
Boeing0.8722641.000000

Question 4#

Créer un data frame avec les données HackerRank-Developer-Survey. Dans ces données, sont une série de réponse que les développeurs de HackerRank ont répondu suite à un sondage ayant pour but de comprendre les l’intérêt des femmes envers l’informatique.

library(dplyr, warn.conflicts = F)
values <- read.csv(paste(path,"HackerRank-Developer-Survey-2018-Values.csv",sep = ""), header = T, stringsAsFactors = F)
head(values)
RespondentIDStartDateEndDateCountryNumeric2q1AgeBeginCodingq2Ageq3Genderq4Educationq0004_otherq5DegreeFocusq30LearnCodeOtherq0030_otherq31Level3q32RecommendHackerRankq0032_otherq33HackerRankChallforJobq34PositiveExpq34IdealLengHackerRankTestq0035_otherq36Level4
6464453728 10/19/17 11:51 10/20/17 12:05 South Korea 16 - 20 years old 18 - 24 years old Female Some college Computer Science Other (please specify) datacamp num%2 == 0 Yes No NA #NULL! Queue
6478031510 10/26/17 6:18 10/26/17 7:49 Ukraine 16 - 20 years old 25 - 34 years old Male Post graduate degree (Masters, PhD) Other STEM (science, technology, engineering, math) num%2 == 0 Yes No NA #NULL! Queue
6464392829 10/19/17 10:44 10/19/17 10:56 Malaysia 11 - 15 years old 12 - 18 years old Female Some college Other STEM (science, technology, engineering, math) num%2 == 0 Yes No NA #NULL! Queue
6481629912 10/27/17 1:51 10/27/17 2:05 Curaçao 11 - 15 years old 12 - 18 years old Male College graduate Computer Science num%2 == 0 Yes No NA #NULL! Hashmap
6488385057 10/31/17 11:46 10/31/17 11:59 16 - 20 years old 25 - 34 years old Female College graduate Other (please specify) Blogs/articles by industry leaders num%2 == 0 Yes No NA #NULL! Hashmap
6463843138 10/19/17 3:02 10/19/17 3:18 United States 41 - 50 years old 35 - 44 years old Male College graduate Computer Science Other (please specify) SoloLearn num%2 == 0 Yes No NA #NULL! Queue

a)#

En utilisanrtt le package dplyr, faites un petit tableau qui donne la proportion des hommes et des femmes dans ce dataset.

Utilisez la variable q3Gender

values_2<-values %>% 
    group_by(q3Gender) %>%
        filter(q3Gender %in% c('Male','Female'))%>% 
            count()
values_2$n<-(values_2$n/ sum(values_2$n)) * 100
values_2
q3Gendern
Female 16.55688
Male 83.44312

b)#

En utilisanrtt le package dplyr, faites un tableau qui donne la proportion des hommes et des femmes en les séparant par le fait qu’ils soient étudiants ou non.

Utilisez les variables q3Gender, is_student et q8Student

values$is_student <- ifelse(values$q8Student == '','Yes','No')
values %>% group_by(q3Gender, is_student) %>% 
    filter(q3Gender %in% c('Male','Female')) %>% 
    count() %>% 
    ungroup() %>% 
    group_by(is_student) %>% 
    mutate(n = (n/ sum(n)) * 100)
q3Genderis_studentn
Female No 20.82685
Female Yes 13.55364
Male No 79.17315
Male Yes 86.44636

c)#

Dressez un tableau qui donne le nombre de répondants par pays (utilisez la variable CountryNumeric2)

values %>% group_by(CountryNumeric2) %>% count() %>% head()
CountryNumeric2n
3991
Afghanistan 3
Albania 8
Algeria 22
American Samoa 1
Andorra 1

d)#

Faites un tableau qui donne le nombre de répondants en les classant par le diplôme obtenu.

Utilisez la variable q4Education

values %>%
            filter(!is.na(q4Education))%>%
            group_by(q4Education)%>%
            summarise(Total = n())%>%
            arrange(desc(Total))  %>%
            mutate(q4Education = reorder(q4Education,Total)) %>%
            head(10)
q4EducationTotal
College graduate 12010
Post graduate degree (Masters, PhD) 6030
Some college 2499
Some post graduate work (Masters, PhD) 2493
High school graduate 1289
Some high school 316
#NULL! 305
Vocational training (like bootcamp) 148

e)#

Faites un tableau qui donne le nombre de développeurs par catégorie d’âge.

Utilisez la variable q1AgeBeginCoding

values %>%
            filter(!is.na(q1AgeBeginCoding)) %>%
            group_by(q1AgeBeginCoding) %>%
            summarise(Total = n()) %>%
            arrange(desc(Total)) %>%
            mutate(q1AgeBeginCoding = reorder(q1AgeBeginCoding,Total)) %>%
            head(10)
q1AgeBeginCodingTotal
16 - 20 years old 14293
11 - 15 years old 5264
21 - 25 years old 3626
5 - 10 years old 933
26 - 30 years old 642
31 - 35 years old 193
36 - 40 years old 67
41 - 50 years old 34
#NULL! 30
50+ years or older 8