Ich habe zwei Datenrahmen, die gemeinsame Spalten haben. Multipliziere zwei Datensätze und mehr in R
# Generate DF1
set.seed(219)
x0 <- rnorm(5, 22, 17)
x2 <- rnorm(5, 44, 15)
x3 <- rnorm(5, 56, 13)
x7 <- rnorm(5, 0, 3)
x9 <- rnorm(5, 28, 31)
x10 <- rnorm(5, 4, 75)
x11 <- rnorm(5, 7, 1)
dat1 <- data.frame(x0,x2,x3,x7,x9, x10, x11)
dat1$ID1 <- rownames(dat1)
# Generate DF2
x1 <- rnorm(10, 2, 19)
x2 <- rnorm(10, 4, 18)
x3 <- rnorm(10, 5, 17)
x4 <- rnorm(10, 7, 16)
x5 <- rnorm(10, 8, 51)
x6 <- rnorm(10, 9, 5)
x7 <- rnorm(10, 0, 3)
x8 <- rnorm(10, 34, 2)
x9 <- rnorm(10, 28, 1)
dat2 <- data.frame(x1,x2,x3,x4,x5,x6,x7,x8,x9)
dat2$ID2 <- rownames(dat2)
anzumerken, dass DF1
hat 5 Reihen während DF2
10 Reihen hat. Ähnliche Spaltennamen in jedem Datenrahmen bedeuten auch nicht, dass beide Spalten den gleichen Wert haben. Diese
ist, was ich möchte tun:
Da
DF1
5 Reihen hat, ich brauche 5 Spalten inDF2
erstellen und nennen wir siey1, y2, y3, y4, y5
.Hier ist, wie
y1
zu berechnen: Ich brauche die erste Zeile inDF1
zu nehmen und es mit ähnlichen Spalten inDF2
für alle Zeilen multiplizieren. Die Größe vony1
wird (10 Zeilen und 1 Spalte) sein. Und ich muss für jede Zeile in DF2 Folgendes berechnen.y1 = x0 + x2 (DF1) * x2 (DF2) + x3 (DF1) * x3 (DF2) + x7 (DF1) * x7 (DF2) + x9 (DF1) * x9 (DF2)
ähnlich Für y2, müssen wir in der zweiten Reihe von DF1 ... etc.
in Bezug auf Vektoren und Matrizen starten, ist hier, wie y1 zu berechnen.
Die erste Zeile in DF1 als (x01, x21, x31, x71, x91, x101, x111, ID11). Dann der erste erste Wert von y1 (erinnere dich, y1 ist 10 * 1):
y11 = x01 + x21 (DF1) * x21 (DF2) + x31 (DF1) * x31 (DF2) + x71 (DF1) * x71 (DF2) + x91 (DF1) · x91 (DF2).
Zweiter Wert von y1:
y12 = x01 + x21 (DF1) * x22 (DF2) + x31 (DF1) * x32 (DF2) + x71 (DF1) * x72 (DF2) + x91 (DF1) * x92 (DF2).
...
finaly, der 10. Wert von y1 ist:
Y110 = x01 + x21 (DF1) * x210 (DF2) + x31 (DF1) * X310 (DF2) + x71 (DF1) * x710 (DF2) + x91 (DF1) * x910 (DF2).
Wie kann ich meinen Algorithmus implementieren?
So wird die 'x0' Konstante 'y2' sein 'Y3', etc .. das heißt, ob die Formel für 'y2' unterscheidet, 'Y3', usw. – akrun
korrekt. da DF2 keine x0 .... hat, kann ich x0 in DF2 als 1e hinzufügen und dann x0 (DF1) * x0 (DF2). – user9292
auch, noch ein Zweifel, so wird die erste Zeile für 'x2' in DF1 mit allen Zeilen von 'x2' in 'DF2' multipliziert werden? – akrun