2017-10-19 13 views
-1

J'ai un jeu de données contenant des lignes d'identificateurs uniques. Chaque identifiant unique occupe plusieurs rangées b/c chaque personne (identifiant) a des classements différents. Par exemple, l'identifiant unique 1 peut avoir une note pour l'objectif A, l'objectif B, l'objectif C, tous représentés dans une rangée distincte.Obtenir la moyenne des identificateurs uniques dans R

Quelle serait la meilleure façon de trouver la moyenne pour chaque identifiant unique (par exemple pour le gestionnaire 1 (identifiant unique 1), quel est leur score moyen sur Goal A, Objectif B et objectif C?

dans Excel , Je ferais cela en utilisant le tri des données> et vérifierais les identificateurs uniques, copierais et collerais ces valeurs au bas de l'ensemble de données, et trouverais la moyenne en utilisant une série d'instructions conditionnelles Je suis sûr qu'il doit y avoir un moyen de faire ceci dans R. J'apprécierais n'importe quelle aide/perspicacité

J'ai commencé avec ce code, mais je ne suis pas sûr si c'est ce dont j'ai besoin. Je filtre par les départements (FSO), puis lui demande de me donner un liste d'ID uniques, puis en calculant l'ave rage pour chaque manager.

df %>% filter(newdept=='FSO') %>% 

distinct (ID)%>% résument (compmean = moyenne (CompRating2, na.rm = TRUE))

+0

Vous voulez 'group_by (ID)', pas 'distinct (ID)' – arvi1000

+0

Donc, ceci: df%>% filter (newdept == 'FSO', CompName2 == 'Lead')%>% groupe_by (ID)% >% resume (compmean = moyenne (CompRating2, na.rm = TRUE)) – user2649399

+0

Oui, c'est juste t - bien que vous n'affichez pas un échantillon de données, je ne sais pas exactement ce que vous obtiendrez. – arvi1000

Répondre

0

Une solution de base R serait d'utiliser aggregate:

dat <- data.frame(id=sample(LETTERS, 50, replace=TRUE), score=sample(1:5, 50, replace=TRUE), stringsAsFactors=FALSE) 
aggregate(score ~ id, data=dat, mean)