2016-03-23 5 views
1

可変価格の要素の数を0、49などと数えたい場合や、何か他にも数が必要な場合は、どれくらいの価格があるか気にしませんこの場合。 1、1、2、1、1 この私の後:この1つは0またはここで私は、このカウントを持ちたいdplyrでのRでの集計の平均とカウント

terminal <- c("a", "b", "a", "c", "b", "b") 
price <- c(0, 49, 3.5, 0, 17, 32) 
df <- data.frame(terminal, price) 

df %>% 
group_by(terminal, price) %>% 
summarise(count = n()) 

49に等しくない場合 私は、端末によって価格の平均をやりたいですこの値が0または49に等しくない場合、端末の価格の平均値を取得することができます。

+0

%>%mutate(n = n())%>%summarize(n = 1 + 2 *(price == 0)+ 4 *(price == 49) (平均価格[%]%(0,49)]、na.rm = TRUE)) – akrun

+0

価格の平均に対する期待される出力を表示することができます – akrun

+0

これは正確です私はこの線を説明することができますか?** gr = 1 + 2 *(価格== 0)+ 4 *(価格== 49)** 感謝の気持ち再び –

答えて

3

値 '0'と値 '49'に基づいて 'price'でグループ化変数を作成する必要があります。このためには、==を使用して0と49の両方で論理インデックスを取得し、0、49、残りの3つのグループを持つ3つのグループを作成します。 「ターミナル」と「GR」によってグループ化され、我々summariseは、行の数が(%in%と否定!を使用して)「N」と0ではありません「価格」のmean、または49、すなわち取得する

library(dplyr) 
df %>% 
    group_by(terminal, gr= 1+2*(price==0)+4*(price==49)) %>% 
    summarise(n=n(), 
       Avg = mean(price[!(price %in% c(0,49))], na.rm=TRUE)) 
関連する問題