I einen Datenrahmen mit der folgenden Struktur:berechnen prozentuale Veränderung von einem Basisdatum innerhalb von Gruppen
set.seed(12345)
df <- data.frame(cat1 = rep(1:4, each = 6),
cat2 = rep(1:2, each = 3,4),
day = rep(as.Date(c("2016-01-01", "2016-01-02", "2016-01-03")),8),
x = sample(80:120,24),
y = sample(80:120,24))
cat1 cat2 day x y
1 1 1 01.01.2016 109 106
2 1 1 02.01.2016 115 95
3 1 1 03.01.2016 120 107
4 1 2 01.01.2016 113 100
5 1 2 02.01.2016 96 88
6 1 2 03.01.2016 85 97
7 2 1 01.01.2016 91 118
8 2 1 02.01.2016 97 80
9 2 1 03.01.2016 104 86
10 2 2 01.01.2016 111 101
11 2 2 02.01.2016 81 91
12 2 2 03.01.2016 84 90
13 3 1 01.01.2016 101 105
14 3 1 02.01.2016 80 108
15 3 1 03.01.2016 90 96
16 3 2 01.01.2016 92 83
17 3 2 02.01.2016 89 99
18 3 2 03.01.2016 112 109
19 4 1 01.01.2016 118 111
20 4 1 02.01.2016 100 115
21 4 1 03.01.2016 103 85
22 4 2 01.01.2016 86 112
23 4 2 02.01.2016 98 81
24 4 2 03.01.2016 105 113
Ich brauche einen Index aus einem festen Datum innerhalb des Datensatz über einen Satz von Untergruppen (CAT1 zu berechnen, CAT2). Mein gewünschtes Ergebnis, wenn auf 2016.02.01 Indizierung sieht wie folgt aus:
cat1 cat2 day x y xi yi
1 1 1 01.01.2016 109 106 0,94783 1,11579
2 1 1 02.01.2016 115 95 1,00000 1,00000
3 1 1 03.01.2016 120 107 1,04348 1,12632
4 1 2 01.01.2016 113 100 1,17708 1,13636
5 1 2 02.01.2016 96 88 1,00000 1,00000
6 1 2 03.01.2016 85 97 0,88542 1,10227
7 2 1 01.01.2016 91 118 0,93814 1,47500
8 2 1 02.01.2016 97 80 1,00000 1,00000
9 2 1 03.01.2016 104 86 1,07216 1,07500
10 2 2 01.01.2016 111 101 1,37037 1,10989
11 2 2 02.01.2016 81 91 1,00000 1,00000
12 2 2 03.01.2016 84 90 1,03704 0,98901
13 3 1 01.01.2016 101 105 1,26250 0,97222
14 3 1 02.01.2016 80 108 1,00000 1,00000
15 3 1 03.01.2016 90 96 1,12500 0,88889
16 3 2 01.01.2016 92 83 1,03371 0,83838
17 3 2 02.01.2016 89 99 1,00000 1,00000
18 3 2 03.01.2016 112 109 1,25843 1,10101
19 4 1 01.01.2016 118 111 1,18000 0,96522
20 4 1 02.01.2016 100 115 1,00000 1,00000
21 4 1 03.01.2016 103 85 1,03000 0,73913
22 4 2 01.01.2016 86 112 0,87755 1,38272
23 4 2 02.01.2016 98 81 1,00000 1,00000
24 4 2 03.01.2016 105 113 1,07143 1,39506
ich für jede Gruppe der Referenzdaten versuchte, Extrahieren mit data.table Subsets und dann mit dieser extrahiert Indizes zu berechnen, aber ich habe nicht herausgefunden, wie um das richtig zu machen.
Könnten Sie das näher erläutern, wie Sie die letzten beiden bekommen Spaltenwerte? – prateek1592
@ prateek1592 Die Werte von x und y innerhalb jeder Untergruppen-Kombination werden am 02.01.2016 durch den Wert von x und y dividiert. – Chris