Ich habe ein Problem, wo ich geschätzte Wachstumsraten auf Basiszahlen multiplizieren muss. Die Wachstumsraten sind in einer Matrix gespeichert (siehe Datenbeispiel unten) und so sind die Basiszahlen. Das ist einfach - das Problem ist, dass ich mehrere Wachstumsraten für mehrere Arten von Entitäten hinter den Basiszahlen habe.For-Schleife innerhalb einer If-Anweisung in R
set.seed(1223)
Typ1.rates <- c(1.1,1.2,0.9,1.4)
Typ2.rates <- c(1.4,5.2,1.9,0.4)
g.rates <- t(cbind(Typ1.rates, Typ2.rates))
x <- as.data.frame(matrix(rexp(16, rate=.2), ncol=4)*100)
x$Type <- c(1,1,1,2)
Also, wenn der Typ == 1 für eine bestimmte Zeile, ich die erste Beobachtung mit der ersten Beobachtung in Typ1.rates multiplizieren will (das [1,1] ist) und so weiter.
Dies ist offensichtlich einfach, wenn ich zwei Arten von Raten habe, aber wenn ich 25 Typen und große Matrizen/Datenrahmen habe, wird es schwierig, manuell zu tun.
Jeder mit einer guten Möglichkeit, dies zu tun?
Wenn mehr Erklärung oder Daten/Code benötigt wird, informieren Sie mir bitte
EDIT:
Mit den Samen gesetzt oben ich die folgenden Matrix
V1 V2 V3 V4
1: 141.8580480 1149.9857213 303.4234747 1014.77951629
2: 770.1481988 407.0247813 1219.3383377 156.62140585
3: 554.1117304 983.2339648 239.1584652 50.52442765
4: 584.8300270 1207.7605414 2252.7680594 43.13052390
haben Sie überprüfen, ob Ihr Beispiel fehlerfrei ist? –
Vielleicht ändern Sie die 16 bis 40 in dem Datenrahmen, den Sie zuweisen? So, um 10 Zeilen zu haben und es schaffen, die 'type'-Spalte anzuhängen. 'x <- as.data.frame (Matrix (rexp (40, rate = .2), ncol = 4) * 100)' –
Es wird bevorzugt, wenn Sie zuerst eine 'set.seed' hinzufügen (also wir könnte Ihre Daten reproduzieren) und zeigen dann die genaue gewünschte Ausgabe. –