J'ai une fonction (LA) que je voudrais postuler à certaines données
> aggregate(all$values, by=list(all$ind), FUN=la)[,2][,1] [1] 14.0625 64.0000
3 Réponses :
Vous pouvez utiliser AVE code>. all$newcol1 <- with(all, ave(values, ind, FUN=function(x) x * la(x)))
all
# values ind newcol
# 1 1 tata 14.0625
# 2 3 tata 42.1875
# 3 5 tata 70.3125
# 4 6 tata 84.3750
# 5 5 toto 320.0000
# 6 8 toto 512.0000
# 7 9 toto 576.0000
# 8 10 toto 640.0000
Merci mais ce n'est pas exactement ce que j'aimerais faire. La nouvelle colonne doit être la première multipliée par 14.0625 pour le facteur TATA et 64.0000 pour le facteur TOTO, respectivement
Utilisation de votre fonction personnalisée et de votre code agrégat, vous pouvez faire Cependant, si tout est tout ce que vous essayez de vous accomplir, vous n'avez pas besoin de la fonction personnalisée et de l'agrégat, et peut utiliser Le code ci-dessous à la place. p> ou avec données.table p>
Merci ! C'est juste ce qui est nécessaire.
@ 2WFR Si cette solution a fonctionné pour vous, n'oubliez pas de le marquer comme la réponse acceptée afin que les autres puissent le trouver plus facilement à l'avenir.
Vous avez déjà une réponse, mais une autre solution (plus encombrante):