Berechnen Prozentuale Veränderung in R mit dplyr
Möchte ich ermitteln, welcher Prozentsatz des Profit
durch YEAR
das ist eine ziemlich einfache Aufgabe, aber irgendwie bin ich immer NA
. Ich habe dieselben Fragen gestellt, bevor, aber ich bin nicht in der Lage zu verstehen, warum ich bin immer NA
. Die Daten sind wie folgt:
> df_vertical_growth
YEAR VERTICAL Profit pct_change
1 2017 AGRICULTURE 0 NA
2 2016 AGRICULTURE 2053358 NA
3 2015 AGRICULTURE 0 NA
4 2014 AGRICULTURE 2370747 NA
5 2013 AGRICULTURE 4066693 NA
6 2017 COMMUNICATION 0 NA
7 2016 COMMUNICATION 1680074 NA
8 2015 COMMUNICATION 1322470 NA
9 2014 COMMUNICATION 1460133 NA
10 2013 COMMUNICATION 1529863 NA
11 2017 CONSTRUCTION 0 NA
12 2016 CONSTRUCTION 0 NA
13 2015 CONSTRUCTION 0 NA
14 2014 CONSTRUCTION 8250149 NA
15 2013 CONSTRUCTION 0 NA
16 2017 EDUCATION 0 NA
17 2016 EDUCATION 12497015 NA
18 2015 EDUCATION 13437356 NA
19 2014 EDUCATION 10856685 NA
20 2013 EDUCATION 13881127 NA
21 2017 FINANCE, INSURANCE, REAL ESTATE 0 NA
22 2016 FINANCE, INSURANCE, REAL ESTATE 0 NA
23 2015 FINANCE, INSURANCE, REAL ESTATE 0 NA
24 2014 FINANCE, INSURANCE, REAL ESTATE 0 NA
25 2013 FINANCE, INSURANCE, REAL ESTATE 5008436 NA
26 2017 HEALTHCARE 0 NA
27 2016 HEALTHCARE 0 NA
28 2015 HEALTHCARE 0 NA
29 2014 HEALTHCARE 4554364 NA
30 2013 HEALTHCARE 5078130 NA
31 2017 HOSPITALITY 0 NA
32 2016 HOSPITALITY 4445512 NA
33 2015 HOSPITALITY 5499419 NA
34 2014 HOSPITALITY 9060639 NA
35 2013 HOSPITALITY 4391522 NA
36 2017 MANUFACTURING 0 NA
37 2016 MANUFACTURING 0 NA
38 2015 MANUFACTURING 0 NA
39 2014 MANUFACTURING 0 NA
40 2013 MANUFACTURING 27466974 NA
41 2017 MINING 0 NA
42 2016 MINING 4359251 NA
43 2015 MINING 4163201 NA
44 2014 MINING 6272530 NA
45 2013 MINING 6668191 NA
46 2017 OTHER 0 NA
47 2016 OTHER 0 NA
48 2015 OTHER 0 NA
49 2014 OTHER 5935199 NA
50 2013 OTHER 3585969 NA
51 2017 PUBLIC ADMIN 0 NA
52 2016 PUBLIC ADMIN 0 NA
53 2015 PUBLIC ADMIN 0 NA
54 2014 PUBLIC ADMIN 0 NA
55 2013 PUBLIC ADMIN 0 NA
56 2017 RETAIL TRADE 0 NA
57 2016 RETAIL TRADE 0 NA
58 2015 RETAIL TRADE 0 NA
59 2014 RETAIL TRADE 0 NA
60 2013 RETAIL TRADE 0 NA
61 2017 SERVICE 0 NA
62 2016 SERVICE 0 NA
63 2015 SERVICE 0 NA
64 2014 SERVICE 0 NA
65 2013 SERVICE 28018522 NA
66 2017 TRANSPORTATION 0 NA
67 2016 TRANSPORTATION 0 NA
68 2015 TRANSPORTATION 0 NA
69 2014 TRANSPORTATION 0 NA
70 2013 TRANSPORTATION 8430244 NA
71 2017 UTILITY 0 NA
72 2016 UTILITY 3551989 NA
73 2015 UTILITY 6535248 NA
74 2014 UTILITY 3995486 NA
75 2013 UTILITY 4477617 NA
76 2017 WHOLESALE TRADE 0 NA
77 2016 WHOLESALE TRADE 6898041 NA
78 2015 WHOLESALE TRADE 7120828 NA
79 2014 WHOLESALE TRADE 0 NA
80 2013 WHOLESALE TRADE 0 NA
Mein Code:
df_vertical_growth %>% group_by(YEAR, VERTICAL) %>%
mutate(pct_change = ((Profit/lag(Profit) - 1) * 100))
Nun, auf Basis der Antworten hier Wie kann ich berechnen Sie die prozentuale Veränderung innerhalb einer Gruppe für mehrere Spalten in R?, auch versucht dabei die folgenden:
pct <- function(x) {x / lag(x) - 1}
df_vertical_growth %>% group_by(YEAR, VERTICAL) %>% mutate_at(funs=pct,Profit)
Aber ich erhalte folgende Fehlermeldung:
Fehler in check_dot_cols(.vars, .cols) : Objekt 'Gewinn' nicht gefunden
Kann mir bitte jemand sagen, was ich falsch mache? Vielen Dank im Voraus.
- Können Sie dput Ihre Daten?
- Hi @suchait: Was meinst du mit dput?
dput(df_vertical_growth)
wird die Ausgabe der Daten-frame als eine Zeile code, die bezogen werden können, von jedem, der will, zu reproduzieren Ihrem Beispiel, ohne eine Datei herunterladen.- Danke @qdread. Da bekam ich die Antwort, ich werde dies im Hinterkopf behalten für die nächste Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem liegt in der Tatsache, dass jede Gruppe eine Beobachtung. Eine einzigartige Jahr pro Vertikale. Was ist das lag von einer Beobachtung? Zusätzlich seit Jahren gehen Sie in absteigender Reihenfolge, die ich Vertrauen, die Sie benötigen, führen.
Dieser Lösung übernimmt der Jahre sind in der richtigen Reihenfolge angeordnet, um sicher zu gehen:
oder verwenden Sie
sowie
lead
z:
Davon aus, dass Ihr
Profit
Spalte repräsentiert den Gewinn in einem bestimmten Jahr, die diese Funktion berechnet die Differenz zwischen dem Jahr n und das Jahr n-1 zu dividieren durch den Wert des Jahres n-1 und multiplizieren mit 100, um einen Prozentsatz. Wenn der Wert im Jahr n-1 war gleich null, es ist keine gültige Prozent ändern. Es ist wichtig, dass Sie Gruppe die Daten nur durchVERTICAL
und nicht durchYEAR
als gut.