Wenn ich einen Datenrahmen, wie:Dividieren Spalte von Daten durch den Mittelwert der Gruppe R
group=rep(1:4,each=10)
data=c(seq(1,10,1),seq(5,50,5),seq(20,11,-1),seq(0.3,3,0.3))
DF=data.frame(group,data)
Jetzt möchte ich durch den Mittelwert der Gruppe jedes data
Element teilen möchten. Zum Beispiel:
group=rep(1:4,each=10)
data=c(seq(1,10,1),seq(5,50,5),seq(20,11,-1),seq(0.3,3,0.3))
DF=data.frame(group,data)
aggregate(DF,by=list(DF$group),FUN=mean)
#Group.1 group data
#1 1 1 5.50
#2 2 2 27.50
#3 3 3 15.50
#4 4 4 1.65
data1=c(seq(1,10,1)/5.5,seq(5,50,5)/27.5,seq(20,11,-1)/15.5,seq(0.3,3,0.3)/1.65)
DF1=data.frame(group, data1)
Dies ist jedoch ein wenig verschachtelt, und funktioniert nicht einfach in einem großen Dataset. Ich habe das Gefühl, dass es eine apply
Anwendung gibt, die hier verwendet werden könnte, aber ich finde keinen guten Weg, dies zu tun.
'DF $ newdata = DF $ data/ave (DF $ data, DF $ Gruppe, FUN = meinen) '? – Frank
Ich war nicht bewusst, 'Ave'. Vielen Dank! – sym246
Beachten Sie, dass 'mean' der Standardwert von' FUN = 'ist. –