library(stringr)
file.create("vide.txt")
file.exists("vide.txt")
file.exists("vide.csv")
Créez une variable qui représente votre date de naissance appelée date_naiss.
date_naiss<-ymd('1990-10-16')
date_naiss
Quelle est la date d'aujourd'hui?
auj=Sys.Date()
auj
Quelle jour de semaine vous êtes né?
weekdays(date_naiss)
Affichez le résultat en espagnole
Sys.setlocale(locale="es_ES.UTF-8")
weekdays(date_naiss)
Remettre votre ordi en Français
Sys.setlocale(locale="fr_FR.UTF-8")
Afin de remercier vos collègues de travail de leur présence à votre première formation que vous avez donné, vous décidez de leur envoyer un message de remerciemenets. Toutefois, vous voulez ajouter votre touche personnelle en écrivant un émail à chaucun de vos collègues. en mentionnant leur prénoms à l'entête de du message.
Votre message ressmble à ceci:
Chèr "prénom",
Un petit mot pour vous dire merci. Merci d’avoir contribué à la réussite de ma première présentation.
À bientôt!
Toutefois, vous vous rendez compte qu'il faut accorder le mot "chèr" au masculin ou au féminin selon le sexe de votre collègue. Vous ne voulez certainement pas perdre votre temps à le faire manuellement, alors vous confiez la tâche à votre bel ordinateur qui comprends bien le langage R
!
a<-read.csv("https://raw.githubusercontent.com/nmeraihi/data/master/coll%C3%A8gues.csv")
tail(a)
library(stringr)
a$prenom<- str_split_fixed(a$PrenomNom, " ", 2)[,1]
a$nom<- str_split_fixed(a$PrenomNom, " ", 2)[,2]
head(a)
a$forme_mas_fem<-ifelse(a$sex=="F", paste("Chère", a$prenom, ","), paste("Chèr", a$prenom, ",", sep = " "))
a$message<-paste(a$forme,
"Un petit mot pour vous dire merci. Merci d’avoir contribué à la réussite de ma première présentation.",
"À bientôt!",sep="\n")
print(head(a$message))
Lorsqu'on affiche le message qui doit être envoyé à chaque collègue, on remarque:
- Les charactères
\n
permettent de créer un saut de ligne dans le paragraphe lorsque ce dernier est écrirt dans un fichier.txt
- On remarque aussi que nous nous adresson bien à nos collègues féminis par
Chère
(Chère Anaïs-Adrienne) alors que les collègues masculins parChèr
(Chèr André).
Nous avons appris à créer des fonctions, à partir de la formule précédente, créer une fonction appelé age
qui calclule l'âge d'une personne. Cette fonction prends comme argument la date de naissance et la date courante. Par défaut, la date de naissance est 1970-01-01 et la date courante est la date d'aujourd'hui
library(lubridate)
date_naiss=ymd('1992-01-01')
date_cour=Sys.Date()
age<-function(date_naiss=ymd('1970-01-01'), date_cour=Sys.Date()){
return(as.numeric((date_cour-date_naiss)/365.25))
}
age(date_naiss, date_cour)
Améliorez notre fonction âge avec une validation que les arguments entrés sont bien des dates
D'abbord vérifions la condition;
is.Date(date_naiss) && is.Date(date_cour)
ensuite nous pouvons insérer
age<-function(date_naiss=ymd('1970-01-01'), date_cour=Sys.Date()){
if (is.Date(date_naiss) && is.Date(date_cour)){
return(as.numeric((date_cour-date_naiss)/365.25))
}
}
age(date_naiss, date_cour)
À partir des données de l'exercice précédent (no3), créez une variole appelée age_collegues qui calcule l'âge de vos collègues avec votre nouvelle fonction que vous venez de créer:
a$age_collegues<-round(age(date_cour =Sys.Date() , date_naiss = as.Date(a$birthdate)))
S'il est plus grand que vous de 3 ans et plus, vous le vouvoyez. Sinon vous ne vous gênez pas de le tutoyer. Puisque nous avons déjà le message, nous pouvons juste modifier ce message en change le vous
par tu
lorsque age_collegues-mon_age>=3
avec la fonction gsub
.
mon_age=age(date_naiss,auj)
round(mon_age,0)
a$message_poli <- ifelse(a$age_collegues-round(mon_age,0)<3,
a$message_poli <- gsub(x=a$message,pattern = "vous", replacement = "te"),
a$message_poli <- a$message)
head(a,2)
Version dplyr:
library(dplyr)
a %>% mutate(message_poli = ifelse(age_collegues-round(mon_age,0)<3,
gsub(x=message,pattern = "vous", replacement = "te"),
message)) %>% head(2)
Créerons tous ces messages dans des fichiers .txt
. Le nom de chaque fichier sera le nom de votre collègue et son prénom comme suit prenon_non.txt
. Tous ces fichiers se trouveront un répertoire appelé lettres
.
for (i in 1:length(a)){
nomfichier <- paste("/Users/nour/Downloads/lettres/",
paste(gsub(a$prenom[i],pattern = " ", replacement = ""),
gsub(a$nom[i],pattern = " ", replacement = "")
, sep="_")
, ".txt",sep="")
print(nomfichier)
writeLines(text=a$message_poli[i], con=nomfichier)
}
Dans le package lubridate
, il existe une fonction qui calcule l'intervale entre deux date, utilisons cette fonction pour valider le calcul de notre fonction age
que nous avons crée précédemment
a$age_lubri<-round(interval(start = as.Date(a$birthdate), end =Sys.Date() ) /
duration(num = 1, units = "years"),0)
head(a)
En utilisant les variables suivantes: x=1 y=40 i=c(1:10) Pour cet exercice, écrivez une boucle for () qui incrémente x par trois et diminue y par deux, pour chaque i.
x=1
y=40
i=c(1:10)
for (j in i)
{x=x+3
y=y-2
print(paste(x, y, sep="_"))
}
Soit les variables:
a=15:10
b=20:15
Pour cet exercice, écrivez une boucle while()
qui calcule un vecteur x = 225 224 221 216 209 200, tel que
x[1]=a[1]*b[6]
x[2]=a[2]*b[5]
x[3]=a[3]*b[5]
.
.
x[6]=a[6]*b[1]
x=c()
i=1
j=6
while (i<7)
{
x[i]=a[i]*b[j]
i=i+1
j=j-1
}
x
en utilisant la variable suivante:
a=1:10
Pour cet exercice, écrivez une boucle while ()
qui calcule un vecteur x = 1 3 6 10 15 21 28 36 45 55, tel que
x[1]=a[1]
x[2]=a[1]+a[2]
x[3]=a[1]+a[2]+a[3]
.
.
a=1:10
i=1
x=c()
while (i<=10)
{
x[i]=sum(a[1:i])
i=i+1
}
x
en utilisant la variable suivante:
i=10
x=10
Pour cet exercice, écrivez une boucle repeat()
qui diminue en calculant x = x / i
jusqu'à ce que i = 0
.
i=10
x=10
repeat
{x=x/i
print(x)
i=i-1
if (i==0)
break
}
Puisque vous êtes en fin de session, vous voulez faire un plan d'étude pour bien réussir vos examens. Ecrivez une boucle repeat qui permet d'afficher toutes les dates entre aujourd'hui et le jour de votre dernier examen:
auj<-as.Date(Sys.Date(),"%d/%m/%Y")
dernier_exam<-as.Date("18/04/2018","%d/%m/%Y")
repeat
{
auj<-auj+1
print(auj)
if (auj==dernier_exam)
break
}