Ich habe eine Datentabelle von Daten und eine Datentabelle von angepassten Koeffizienten. Ich möchte den angepassten Wert für jede Zeile berechnen.R Daten.Tabelle Punkt Produkt mit übereinstimmenden Spaltennamen (für jede Gruppe)
dt = data.table(a = rep(c("x","y"), each = 5), b = rnorm(10), c = rnorm(10), d = rnorm(10))
coefs = data.table(a = c("x","y"), b = c(0, 1), d = c(2,3))
dt
# a b c d
# 1: x -0.25174915 -0.2130797 -0.67909764
# 2: x -0.35569766 0.6014930 0.35201386
# 3: x -0.31600957 0.4398968 -1.15475814
# 4: x -0.54113762 -2.3497952 0.64503654
# 5: x 0.11227873 0.0233775 -0.96891456
# 6: y 1.24077566 -1.2843439 1.98883516
# 7: y -0.23819626 0.9950835 -0.17279980
# 8: y 1.49353589 0.3067897 -0.02592004
# 9: y 0.01033722 -0.5967766 -0.28536224
#10: y 0.69882444 0.8702424 1.24131062
coefs # NB no "c" column
# a b d
#1: x 0 2
#2: y 1 3
Für jede Zeile in a=="x"
dt, möchte ich 0*b+2*d
; und für jede a=="y"
Zeile in dt möchte ich 1*b+3*d
.
Gibt es einen datablen Weg, dies ohne Hardcode den Spaltennamen zu tun? Ich bin glücklich, die Spaltennamen in eine Variable cols = colnames(coefs)[-1]
zu setzen.
Es ist einfach, Gruppen und rbind
miteinander zu verknüpfen. Wenn die Gruppierung Probleme verursacht, ignorieren Sie diesen Teil.
Meine ähnliche Frage: http://stackoverflow.com/q/19279075/ Für was es wert ist, denke ich, es ist natürlich, dass man sich Sorgen über den Namen dynamisch machen würde, und das macht diese Frage nicht zu einem "beweglichen Ziel" " überhaupt. – Frank