Sagen wir, ich habe ein data.frame
Mehrere Spalten auf einen Schlag erstellen?
DF = structure(list(AE = c(148, 1789, 1223, 260, 1825, 37, 1442, 484,
10, 163, 1834, 254, 445, 837, 721, 1904, 1261, 382, 139, 213),
FW = structure(c(1L, 3L, 2L, 3L, 3L, 1L, 2L, 3L, 2L, 2L,
3L, 2L, 3L, 2L, 1L, 3L, 1L, 1L, 1L, 3L), .Label = c("LYLR",
"OCXG", "BIYX"), class = "factor"), CP = c("WYB/NXO", "HUK/NXO",
"HUK/WYB", "HUK/NXO", "WYB/NXO", "HUK/WYB", "HUK/NXO", "HUK/NXO",
"WYB/NXO", "HUK/NXO", "WYB/NXO", "HUK/NXO", "HUK/WYB", "WYB/NXO",
"HUK/WYB", "WYB/NXO", "WYB/NXO", "HUK/WYB", "WYB/NXO", "WYB/NXO"
), SD = c(1, 1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, -1,
-1, 1, -1, 1, 1, 1)), .Names = c("AE", "FW", "CP", "SD"), row.names = c(NA, -20L), class = "data.frame")
oder in für Menschen lesbaren Format:
AE FW CP SD
1 148 LYLR WYB/NXO 1
2 1789 BIYX HUK/NXO 1
3 1223 OCXG HUK/WYB -1
4 260 BIYX HUK/NXO 1
5 1825 BIYX WYB/NXO 1
6 37 LYLR HUK/WYB 1
7 1442 OCXG HUK/NXO 1
8 484 BIYX HUK/NXO -1
9 10 OCXG WYB/NXO 1
10 163 OCXG HUK/NXO 1
11 1834 BIYX WYB/NXO -1
12 254 OCXG HUK/NXO -1
13 445 BIYX HUK/WYB 1
14 837 OCXG WYB/NXO -1
15 721 LYLR HUK/WYB -1
16 1904 BIYX WYB/NXO 1
17 1261 LYLR WYB/NXO -1
18 382 LYLR HUK/WYB 1
19 139 LYLR WYB/NXO 1
20 213 BIYX WYB/NXO 1
Als data.table,
DT = data.table(DF)
setkey(DT, CP)
Betrachten wir nun die beiden folgenden Operationen:
DT[, amount_sum_fh := DT[.(CP = CP),
on = .(CP), mean(AE * SD), by=.EACHI]$V1]
DT[, amount_sum_sh := DT[.(CP = CP),
on = .(CP), mean(AE), by=.EACHI]$V1]
Gibt es eine Möglichkeit, sie auf einen Schlag zu machen?
In diesem Fall ist kein Join 'DF [, \': = \ '(x = Mittelwert (AE * SD), y = Mittelwert (AE)), = CP] [] 'erforderlich. Im Allgemeinen denke ich, dass ein Join nur benötigt wird, wenn eine Ungleichheit in den 'on = 'merge conditions oder eine separate Tabelle involviert ist. – Frank