Calcul nombre occurences d'une chaine de caractères

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Alexis Cossé
Messages : 5
Enregistré le : 19 Juil 2018, 09:30

Calcul nombre occurences d'une chaine de caractères

Messagepar Alexis Cossé » 23 Juil 2018, 14:50

Bonjour à tous,

Tout d'abord, je tiens à préciser que je suis ultra novice avec le langage R. Ma problématique est de pouvoir calculer un nombre d'occurrences d'une variable qui contient des valeurs non numériques, mais qui sont sous forme de chaines de caractères. Malgré de nombreuses recherches sur les forums qui traitent le sujet, je n'ai pas trouvé la réponse à cette question.

Voici ma problématique : je dispose d'un df qui contient deux variables qui sont : le nombre d'acquisition "N°d'acq." et le mode d'acquisition "Type d'IR". Voici le df :

N° d'acq. Type d'IR
1 Fluoroscopy
2 Fluoroscopy
3 Fluoroscopy
4 Fluoroscopy
5 Stationary Acquisition
6 Fluoroscopy
7 Fluoroscopy
8 Fluoroscopy
9 Stationary Acquisition
10 Fluoroscopy

J'ai trouvé le moyen de compter le nombre total d'acquisitions (je vous ai dit que j'étais novice ^^), que j'enregistre. Je souhaiterais à présent pouvoir compter le nombre d’occurrences des chaines de caractères : "Fluoroscopy" et "Stationary Acquisition" afin de calculer un pourcentage du mode d'utilisation de mon appareil : càd "fluoroscopie" vs "l'acquisition stationnaire".

Par avance, je vous remercie !

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Calcul nombre occurences d'une chaine de caractères

Messagepar Serge Rapenne » 23 Juil 2018, 15:12

Bonjour,

cf la fonction table.
J'ai changé le nom des colonnes car les espaces et les ' ne sont pas pratique à gérer.

Code : Tout sélectionner

dta<-structure(list(No = 1:10, Type_IR = structure(c(1L, 1L, 1L, 1L,
2L, 1L, 1L, 1L, 2L, 1L), .Label = c(" Fluoroscopy", " Stationary Acquisition"
), class = "factor")), .Names = c("No", "Type_IR"), class = "data.frame", row.names = c(NA,
-10L))
dta
   No                 Type_IR
1   1             Fluoroscopy
2   2             Fluoroscopy
3   3             Fluoroscopy
4   4             Fluoroscopy
5   5  Stationary Acquisition
6   6             Fluoroscopy
7   7             Fluoroscopy
8   8             Fluoroscopy
9   9  Stationary Acquisition
10 10             Fluoroscopy

table(dta$Type_IR)

            Fluoroscopy  Stationary Acquisition
                      8                       2
 #pour les pourcentages
 table(dta$Type_IR)/nrow(dta)*100

            Fluoroscopy  Stationary Acquisition
                     80                      20
                     
                     


Serge

Alexis Cossé
Messages : 5
Enregistré le : 19 Juil 2018, 09:30

Re: Calcul nombre occurences d'une chaine de caractères

Messagepar Alexis Cossé » 24 Juil 2018, 07:31

Bonjour,

Super merci ça marche très bien.

Bonne journée à vous.

Alexis

Alexis Cossé
Messages : 5
Enregistré le : 19 Juil 2018, 09:30

Re: Calcul nombre occurences d'une chaine de caractères

Messagepar Alexis Cossé » 10 Aoû 2018, 09:50

Bonjour,

Je souhaite m'appuyer sur le sujet abordé dans mon post pour introduire un problème auquel je fais face avec R Markdown. Dans mon précédent post, je souhaitais pouvoir calculer le pourcentage d’occurrence des valeurs non numériques ; "Fluoroscopy" et "Stationary Acquisition", contenues dans ma variable 'Type_IR'.

La solution apportée par Serge R. fonctionne très bien. En adaptant le code pour mon script et en utilisant la fonction sink(), j'ai réussi à enregistrer ce résultat dans un fichier .txt. Voici le code utilisé (je n'affiche pas le sink() dans cet exemple) :

Code : Tout sélectionner

TypeIR_pourcent<-table(dta$Type_IR)/nrow(dta)*100
print(round(TypeIR_pourcent,1))

Le résultat affiché dans mon document .txt est le suivant :
Fluoroscopy Stationary Acquisition
...........80.0 .........................20.0 (les points n'apparaissent dans le .txt, c'est simplement pour respecter la mise en forme)


J'ai ensuite décidé de créer un fichier .html avec R Markdown (et j'essayerai au format pdf par la suite), mais le résultat ne s'affiche pas comme dans je le souhaiterais. En effet, j'utilise dans R Markdown les codes suivants :

Dans le chunk :

Code : Tout sélectionner

TypeIR_pourcent<-table(dta$Type_IR)/nrow(dta)*100

Et pour coller le résultat dans mon fichier .html :

Code : Tout sélectionner

Le bilan des type d'IR utilisés, exprimé en %, est :<br/>
`r round(TypeIR_pourcent,1)`

Le résultat affiché dans mon .html est :
Le bilan des types d'IR utilisés exprimés en %, est:
80.0, 20.0

On peut constater que les informations : 'Fluorocopy' et 'Stationary Acquisition' n'apparaissent plus comme dans le .txt.
J'ai essayé avec la fonction paste(), mais j'obtiens de même résultat...

Savez-vous comment je peux faire pour que les informations 'Fluorocopy' et 'Stationary Acquisition' apparaissent en regard de mes résultats d’occurrence ?
Je vous remercie par avance pour votre aide.

Alexis


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité