Mam szereg czasowy sprzedaży według identyfikatora konta. Aby obliczyć średni wzrost, muszę wyodrębnić pierwszy miesiąc z niezerową sprzedażą dla każdego identyfikatora. Ponieważ konto mogło zostać utworzone w różnym czasie, muszę dynamicznie identyfikować, kiedy sprzedaż> 0 po raz pierwszy na koncie.Znajdź pierwsze niezerowe wystąpienie w ramce danych
Indeks do rzędu wystarczyłby, aby przejść do funkcji obliczającej wzrost. Spodziewam się następujących wyników według identyfikatora konta:
54 - [1]
87 - [4]
95 - [2]
I tried `apply(df$Sales,2,match,x>0)` but this doesn't work.
Jakieś wskazówki? Czy istnieje również łatwiejszy sposób obliczenia CAGR na tym zestawie danych?
Z góry dziękuję!
CalendarMonth ID Sales
8/1/2008 54 6692.60274
9/1/2008 54 6476.712329
10/1/2008 54 6692.60274
11/1/2008 54 6476.712329
12/1/2008 54 11098.60822
7/1/2008 87 0
8/1/2008 87 0
9/1/2008 87 0
10/1/2008 87 18617.94155
11/1/2008 87 18017.36279
12/1/2008 87 18617.94155
1/1/2009 87 18617.94155
2/1/2009 87 16816.20527
7/1/2008 95 0
8/1/2008 95 8015.956284
9/1/2008 95 0
10/1/2008 95 8015.956284
11/1/2008 95 6309.447514
12/1/2008 95 6519.762431
1/1/2009 95 6519.762431
Czy mówisz, że chcesz indeks do tego wiersza wśród podzestawu wpisów dla identyfikatora, gdzie sprzedaż jest niezerowa? Ponieważ 4 dla 87 jest tylko wtedy, gdy podzbiór tej tabeli, inaczej byłoby 9 (licząc od góry). –
Tak, to prawda. Jeszcze nie do końca zrozumiałem, jak, ale z plyr i ggplot, mam wizje pracy nad podzbiorami ID, aby skutecznie obliczyć i pokazać średnie statystyki wzrostu. – user1100825