2017-12-18 18 views
0

いくつかの類似の質問がありましたが、私の特定のケースで役立つものはありません。毎四半期ごとに、イベント名ごとにイベント数が記録されます。欠落カウントを取得するために、各イベントごとにいくつかのパスが行われます。私は、各パスのカウントの変化率を、それぞれのパスの以前のカウント数と比較したいと思います。 さまざまな期間にわたってサブグループのデータフレームの変化率を計算します。

この

は、私が現在持っているデータ(異なる値が、同じ形式)である:

ID <- c(221, 221, 345, 345, 209, 209, 209, 19, 19, 19, 536, 536, 536) 
Pass <- c(1, 2, 1, 2, 1, 2, 3, 1, 2, 3, 1, 2, 3) 
Event_count <- c(2000, 100, 2050, 150, 50000, 10000, 600, 51000, 11000, 700, 50500, 10500, 650) 
Event_name <- c(rep('filter', 4) , rep('observations', 9)) 
Date <- c(rep('2015-03-01',2) , rep('2015-06-01',2) , rep('2015-03-01',3) , rep('2015-06-01',3), rep('2015-09-01',3)) 
df <- data.frame(ID, Pass, Event_count, Event_name, Date) 

    ID Pass Event_count Event_name  Date 
1 221 1  2000  filter 2015-03-01 
2 221 2   100  filter 2015-03-01 
3 345 1  2050  filter 2015-06-01 
4 345 2   150  filter 2015-06-01 
5 209 1  50000 observations 2015-03-01 
6 209 2  10000 observations 2015-03-01 
7 209 3   600 observations 2015-03-01 
8 19 1  51000 observations 2015-06-01 
9 19 2  11000 observations 2015-06-01 
10 19 3   700 observations 2015-06-01 
11 536 1  50500 observations 2015-09-01 
12 536 2  10500 observations 2015-09-01 
13 536 3   650 observations 2015-09-01 

そして、あなたは私に知らせてください、このデータを表示するために、より良い方法を考えることができれば、これは(私が望む出力され!)

Percentage_change <- c(NA, NA, 2.5, 50, NA, NA, NA, 2, 10, 16.67, -0.98, -4.55, -7.14) 
df2 <- data.frame(ID, Pass, Event_count, Event_name, Date,Percentage_change) 

    ID Pass Event_count Event_name  Date Percentage_change 
1 221 1  2000  filter 2015-03-01    NA 
2 221 2   100  filter 2015-03-01    NA 
3 345 1  2050  filter 2015-06-01    2.50 
4 345 2   150  filter 2015-06-01    50.00 
5 209 1  50000 observations 2015-03-01    NA 
6 209 2  10000 observations 2015-03-01    NA 
7 209 3   600 observations 2015-03-01    NA 
8 19 1  51000 observations 2015-06-01    2.00 
9 19 2  11000 observations 2015-06-01    10.00 
10 19 3   700 observations 2015-06-01    16.67 
11 536 1  50500 observations 2015-09-01    -0.98 
12 536 2  10500 observations 2015-09-01    -4.55 
13 536 3   650 observations 2015-09-01    -7.14 

私はこれだけで私を助けることができる任意のパッケージがあるかどうか私は知らないRの比較的基本的な知識を持っている - あなたは私を提供することができます任意のヘルプ/説明は大幅になります感謝。

答えて

1

は、これはあなたが

library(dplyr) 
df %>% 
    group_by(Event_name, Pass) %>% 
    mutate(Percentage_change=(Event_count/lag(Event_count)-1)*100) 
+0

このような簡潔なソリューション、感謝をしたい値を返すようです!この方法では、絶対カウントの変更を簡単にすることができます。これは、次に行うことです。 – Maharero

関連する問題