2017-03-29 7 views
0

내가 보이는 DF을 말해봐 R의 그룹화 수단 값과 같은 :

rat let num 
1  A 3 
3  c 12   
3  B 41   
1  B NA   
1  A NA  
2  B 2  
2  C 20   
1  C NA  
2  A 33   
3  C 10 
내가 '쥐'GROUP_BY와 '하자'와 'NUM의 평균을 좀하고 싶습니다

'를 입력하고 그 값을 사용하여을 채우십시오.

나는 그룹화를 수행했지만 평균을 얻었지만 은 원래의 df에 NA 값을 채우는 값을 적용하는 법을 모릅니다. 다른 방법은 크게 감사하겠습니다! 감사.

df %>% group_by(rat,let) %>% summarise(num_avg = mean(num,na.rm=T)) 
+4

에서 avena.aggregate 하나 개의 옵션입니다. –

+0

저는 R 학습을 시작했습니다.이 예제는 다른 코딩 방법을 배우는 데 사용할 수있는 방법 일뿐입니다. – Ricky

답변

1

하나의 방법이 있습니다.

df <- df %>% group_by(rat,let) %>% mutate(num_avg = mean(num,na.rm=T)) 
df$num[is.na(df$num)] <- df$num_avg[is.na(df$num)] 
+2

원하는 경우 그룹 평균을 사용하여 NA를 채우는 것은 한 줄로 수행 할 수 있습니다 :'df %> % group_by (rat, let) %> % mutate (num = ifelse (is.na (num), mean (num) , na.rm = TRUE), num))' – www

1

다음은 더 이상 통계를하려는 경우이 작업을 수행하지 마십시오 zoo

library(zoo) 
df$num <- with(df, ave(num, rat, let, FUN = na.aggregate))