2017-10-28 10 views
0

私はgroup_byを使用した後にdplyrを使用して行の数を数えようとしています。Dplyrのグループごとに行数を数える:評価エラー

scenario pertubation population  
    A   1    20 
    B   1    30 
    C   1    40 
    D   1    50 
    A   2    15 
    B   2    25 

そして、私はGROUP_BYするには、次のコードを使用していますとのmutate:私は、以下のデータを持っている

test <- all_scenarios %>% 
     group_by(scenario) %>% 
     mutate(rank = dense_rank(desc(population)), 
       exceedance_probability = rank/count(pertubation)) %>% 
     select(scenario, pertubation, All.ages, rank, exceedance_probability) 

をしかし、私はこのエラーメッセージをencoutering維持し、私はそれが何を意味するのか分からないです、またはなぜ私はそれを得続けているのですか?

scenario pertubation population rank exceedance_probability 
    A   1    20  12   0.06 
    B   1    30  7   0.035 
    C   1    40  2   0.01 
    D   1    50  1   0.005 
    A   2    15  34   0.17 
    B   2    25  28   0.14 

は、私はちょうど観測数によってランクを分割する必要がある超過確率を計算するために、私はそれを見つけた:

Error in mutate_impl(.data, dots) : 
Evaluation error: no applicable method for 'groups' applied to an object of class "c('integer', 'numeric')". 

私はこのような何かを見て、私の出力データを希望しますgroup_byステートメントの後でdplyrでこれを行うのは難しいです。私はdplyrステートメントを間違って注文していますか?私たちは、別途countを取得し、元のデータセット

all_scenarios %>% 
     count(pertubation) %>% 
     left_join(all_scenarios, ., by = 'pertubation') %>% 
     group_by(scenario) %>% 
     mutate(rank = dense_rank(desc(population)), exceedance_probability = rank /n) 

またはその代わりのcountを使用して参加することができ

+0

'カウントを取得することができます'はdata.frameで使われるべきです。あなたの例と出力は異なっているようです。おそらく 'all_scenarios%>%group_by(シナリオ)%>%mutate(rank = dense_rank(desc(population))、exceedance_probability = rank/table(pertubation) – akrun

答えて

0

、我々は、第二group_byを行うと、n()

all_scenarios %>% 
    group_by(scenario) %>% 
    mutate(rank = dense_rank(desc(population))) %>% 
    group_by(pertubation) %>% 
    mutate(exceedance_probability = rank /n()) 
関連する問題