0
votes

Comment agréger les données dans R de manière à renvoyer toute la ligne qui répond à la condition d'agrégation? [pas de dplyr]

J'ai des données qui ressemblent à ceci: xxx pré>

je veux regrouper par id code> tel que le fichier de données résultant contient le entier em> rangée qui satisfait à mon état d'agrégat. Donc, si je regrette par le max code> de int_var code>, je veux renvoyer la première ligne entière: p>

new_data <- aggregate(data[,c("ID", "FACTOR_VAR", "INT_VAR")], by=list(data$ID), fun=max)


1 commentaires

Utilisez AVE si vous souhaitez conserver toutes les colonnes: sous-ensemble (df, as.logique (AVE (INT_VAR, ID, amusement = fonction (x) x == max (x)) )


3 Réponses :


1
votes

Si vous souhaitez conserver toutes les colonnes, utilisez Ave code> à la place:

subset(df, as.logical(ave(INT_VAR, ID, FUN = function(x) x == max(x))))


0 commentaires

1
votes

Vous pouvez utiliser agrégat code> pour cela. Si vous souhaitez conserver toutes les colonnes, fusion code> peut être utilisé avec celui-ci.

df <- structure(list(ID = c(1L, 1L), FACTOR_VAR = structure(1:2, .Label = c("CAT", "DOG"), class = "factor"), INT_VAR = 1:0), class = "data.frame", row.names = c(NA,-2L))


0 commentaires

0
votes

Nous pouvons le faire dans dplyr xxx


ou en utilisant data.table xxx


0 commentaires