Calcul dans un DATAFRAME

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

Mathilde DEMONCHY
Messages : 20
Enregistré le : 26 Juin 2019, 07:15

Calcul dans un DATAFRAME

Messagepar Mathilde DEMONCHY » 12 Juil 2019, 04:34

Bonjour !

Je me creuse la tête mais je n'arrive pas à faire le calcul tout simple suivant :
J'ai mon dataframe "DF" avec 3 colonnes ( x ; Acte ; Centre)
je souhaiterai obtenir juste le nombre de "Centre" différents en fonction des "Acte".

Voici la génération d'un DataFrame simple ressemblant au mien.

Code : Tout sélectionner

x  <-  rnorm(30,mean = 5,sd = 1.5)
Acte <- rep (  c("A1","A2","A1","A3","A2") , 6 )
Centre <- rep ( c("C1","C2","C3") , 10 )
DF <- data.frame (x,Acte,Centre)


Ici, Je souhaiterai obtenir tout simplement ça :

Acte nb_de_Centres_differents
A1 3
A2 3
A3 3

Puisque par exemple pour A1, il apparaitra avec le centre C1; puis C2, puis C3 dans mon dataframe DF.
Idem pour A2 et A3.

Toute idée sera la bienvenue :-)
Bonne journée
Mathilde

Eric Casellas
Messages : 767
Enregistré le : 06 Jan 2009, 14:59

Re: Calcul dans un DATAFRAME

Messagepar Eric Casellas » 12 Juil 2019, 07:21

Bonjour,
Une façon de faire avec les fonctions de base unique en length utilisées dans un Xapply :

Code : Tout sélectionner

data.frame(Acte=unique(DF$Acte),  nb_de_Centres_differents=sapply(unique(DF$Acte), function(x){length(unique(DF$Centre[DF$Acte==x]))}))
Eric

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Calcul dans un DATAFRAME

Messagepar Pierre-Yves Berrard » 12 Juil 2019, 07:34

Une autre façon, avec le package dplyr :

Code : Tout sélectionner

DF %>%
  group_by(Acte) %>%
  summarise(
    nb_centres = n_distinct(Centre)
  )
PY

Mathilde DEMONCHY
Messages : 20
Enregistré le : 26 Juin 2019, 07:15

Re: Calcul dans un DATAFRAME

Messagepar Mathilde DEMONCHY » 12 Juil 2019, 09:55

Merci à Pierre-Yves et Eric pour ces deux propositions.
Je m'attèle à les appliquer à mon "big" dataframe.

Un grand merci pour votre aide !
Bonne journée
Mathilde


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité