2016-07-14 2 views
0

아래의 d2 데이터 프레임이 있으며 그룹 및 플래그별로 x의 평균 인 열을 추가하고 싶습니다. 그러나 mutate 코드에 플래그 열을 추가하는 중 그룹 AND 플래그로 평균을 더하는 방법을 모르겠습니다.돌연변이를 사용하여 평균을 계산하는 dplyr을 사용하여 열을 추가하십시오.

d = data.frame(x=c(seq(1,5,1),seq(11,15,1),100,1000),group= c(rep("A",5),rep("B",5),"A","B")) 
    d 
    d2 = d%>% 
     group_by(group) %>% 
     mutate( 
        U=quantile(x, 0.75) + 1.5*IQR(x), 
        L=quantile(x, 0.25) - 1.5*IQR(x), 
        flag = ifelse(x>U | x<L,1,0), 
        mu = mean(x) 
        ) 
    as.data.frame(d2) 

나는 간단하게 다음 mutate()을 초기 작업 후 체인에 group_by(group, flag)을 추가하고 결과가

 x group U L flag  mu result 
1  1  A 8.5 -1.5 0 19.16667  3 
2  2  A 8.5 -1.5 0 19.16667  3 
3  3  A 8.5 -1.5 0 19.16667  3 
4  4  A 8.5 -1.5 0 19.16667  3 
5  5  A 8.5 -1.5 0 19.16667  3 
6 11  B 18.5 8.5 0 177.50000  13 
7 12  B 18.5 8.5 0 177.50000  13 
8 13  B 18.5 8.5 0 177.50000  13 
9 14  B 18.5 8.5 0 177.50000  13 
10 15  B 18.5 8.5 0 177.50000  13 
11 100  A 8.5 -1.5 1 19.16667 100 
12 1000  B 18.5 8.5 1 177.50000 1000 


note having  group_by(group,flag) 

returns 

Error: unknown variable to group by : flag 
+1

내가 잘 모르겠다. 귀하의'ifelse()'에 따르면'flag == 1',''0'' 일 때만 평균값을 원하십니까? 이것은 위의'result' 컬럼을 반영하지 않습니다. 나는 당신이 찾고있는 것이 단순히 첫 번째 코드에 추가하는 것이라고 생각한다. ... % group_by (group, flag) %> % mutate (result = mean (x))' –

+0

나는 혼란 스럽다고 생각한다. 결과 벡터에서 결과를 찾고 있습니다. 그것이 그룹과 깃발에 의하여 평균을 어떻게 돌려 보내는 지보십시오. 플래그가 아직 계산되지 않았으므로 group_by (group, flag)가 반환하고 오류가 발생합니다. – user3022875

답변

2

해야 무엇을위한 "결과"벡터를 추가했습니다 :

d %>% 
    group_by(group) %>% 
    mutate( 
    U = quantile(x, 0.75) + 1.5 * IQR(x), 
    L = quantile(x, 0.25) - 1.5 * IQR(x), 
    flag = ifelse(x > U | x < L, 1, 0), 
    mu = mean(x)) %>% 
    group_by(group, flag) %>% 
    mutate(result = mean(x)) 

어느 것 :

#Source: local data frame [12 x 7] 
#Groups: group, flag [4] 
# 
#  x group  U  L flag  mu result 
# <dbl> <fctr> <dbl> <dbl> <dbl>  <dbl> <dbl> 
#1  1  A 8.5 -1.5  0 19.16667  3 
#2  2  A 8.5 -1.5  0 19.16667  3 
#3  3  A 8.5 -1.5  0 19.16667  3 
#4  4  A 8.5 -1.5  0 19.16667  3 
#5  5  A 8.5 -1.5  0 19.16667  3 
#6  11  B 18.5 8.5  0 177.50000  13 
#7  12  B 18.5 8.5  0 177.50000  13 
#8  13  B 18.5 8.5  0 177.50000  13 
#9  14  B 18.5 8.5  0 177.50000  13 
#10 15  B 18.5 8.5  0 177.50000  13 
#11 100  A 8.5 -1.5  1 19.16667 100 
#12 1000  B 18.5 8.5  1 177.50000 1000 
관련 문제