2017-02-06 1 views
-2

RI에서 데이터 세트 'cars'를 사용하면이 데이터 세트에 'dist'열의 평균을 'column'열의 값에 따라 사용하는 새 열을 추가하려는 반면, 또한 그룹핑 매개 변수로 '속도'를 평가하는 R을가집니다.R 다른 변수를 기반으로 한 새 변수

그래서 처음 나는 자동차 $ 속도의 고유 한 속도를 반영하는 19 개 그룹이 필요합니다 내가 평균 DIST가 무엇인지 알고 싶습니다이 19 개 그룹 각각에 대해

4 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 

, 그러나의 경우에만 적어도 하나의 이 19 개 카테고리 각각의 항목은 기준을 충족합니다 (예 : 적어도 하나의 dist 값이 20을 초과합니다.)

자동차 데이터 세트를 사용하면 속도가 4에서 12 인 자동차의 경우 다음과 같이 표시됩니다.

speed dist avr_dist_if_one_speed_is_above20 
4 2 none 
4 10 none 
7 4 13 
7 22 13 
8 16 none 
9 10 none 
10 18 26 
10 26 26 
10 34 26 
11 17 22.5 
11 28 22.5 
12 14 21.5 
12 20 21.5 
12 24 21.5 
12 28 21.5 
... 

속도 4 인 2 대의 자동차 모두 20 미만의 dist가 있기 때문에이 두 항목에 대한 평균값을 얻지 못합니다. 속도가 7 인 자동차의 경우 속도가 7 인 자동차가 최소 1 대가 20 대 이상이므로 최소 13의 차를 얻을 수 있습니다.

속도가 8과 9 인 자동차의 경우 평균이 아닙니다. 이 차는 속도 10 차의 두 이후 26

의 평균을 반환 내가 22.5

을 얻을 속도 (11)와 자동차 (20)

위의 DIST가 있어야 속도 (10)와 20 대 이하의 DIST가

속도가 12 인 자동차의 경우 21.5가됩니다.

나머지 코드는 모두 dist> 20 인 자동차를 포함하므로 나머지 모든 속도 카테고리에 대한 평균 dist를 계산해야합니다.

+2

이 코드 쓰기 서비스가 아닙니다. 직접 작성하려고 시도하는 동안 코드를 추가하십시오. –

+0

일부 열을 기준으로 그룹화하려면'dplyr' 및/또는'data.table'을 살펴보십시오. R로 그룹화하고 요약하는 방법에 대해 Google에 문의하면 Stackoverflow에서 신속하게 답변을 찾을 수 있습니다. – steveb

+0

미리 사과드립니다. 나는 R에 매우 익숙하며 코딩에 대한 지식이 거의 없다. 위의 예에 대한 코드는 없습니다. 손으로 출력을 생성했습니다. – swk

답변

0

귀하의 질문을 올바르게 이해하면 귀하가 찾고있는 것을 할 수 있습니다.

library(dplyr) 

cars %>% 
     group_by(speed) %>% 
     summarise(n = n(), 
        avg_dist = ifelse(any(dist > 20),mean(dist, na.rm = T), NA) 
+0

OP가 출력을 표시하는 방법이 주어지면'mutate'를 사용하고 요약하지 않을 수 있습니다. OP는 입력 데이터에 추가 된 새 열을 표시합니다. – steveb

+0

사실. 나는 형식 변경 이전에 이것을 대답 했으므로 OP가 속도별로 그룹화하기를 원했던 설명에서 벗어나려고했다. – Puddlebunk

+0

예. 이거 야. – swk

0

이 시도 :

library(dplyr) 

cars %>% 
     group_by(speed, dist) %>% 
     group_by(speed) %>% 
     mutate(avr_dist_if_one_speed_is_above20 = mean(dist[max(dist)>20])) 
관련 문제