2017-11-19 2 views
0

여기에 두 개의 숫자 열 (adm_muac1 및 adm_muac2)이 있습니다. 두 개의 평균이지만 두 열이 모두 누락되지 않은 세 번째 열을 만들려는 경우 (내 데이터 집합에서 누락 된 값이 예상 됨) 그렇지 않은 경우 평균이 아니 어서 누락되지 않은 열을 세 번째 값으로 반환해야합니다. 기둥. 조건부 평균

나는 여기에이 코드를

df2<-mutate(df1, 
    col3=ifelse((!is.na(col1)&!is.na(col2)),(col1+col2)/2, 
           col1|col2)) 

을 쓴 데이터가 첫 번째 부분은 정말 잘 Executing (실행 중)하지만, 두 번째 부분이 아닌

df1<-data.frame(col1=c(12,23,NA,14,15,20),col2=c(NA,20,16,17,18,NA)) 
Expectedcol3 
12 
27.5 
16 
15.5 
16.5 
20 

을 설정합니다. 아이디어는 col1과 col2가 둘 다 누락되지 않았 으면 평균을 원한다는 것입니다. 그렇지 않으면 평균이 없지만 col1과 col2 사이의 누락 된 열 중 하나를 내 항목 col3으로 가져와야합니다. 어떤 도움은 매우

당신은 중첩 된 ifelse을 할 수있는 당신에게

col1 col2 col3 
15.6 15.5 15.55 
17  17.3 17.15 
11.1    1 
12.4 12.4 12.4 
12.3 12.2 12.25 
13  13.1 13.05 
10.1 10.2 10.15 
10.4 10.5 10.45 
11  11.1  11.05 
9.1  9.3 9.2 
11.6 11.9 11.75 
     11.4 1 
11.2 11.4 11.3 
11.2 11.1 11.15 
10.2 10.3 10.25 
12.1 12.2 12.15 
15.9 15.8 15.85 
15.1 15.1 15.1 
9.5  9.8  9.65 
11.4 11.4 11.4 
11.7 11.6 11.65 
     9.3  1 
+0

이있을 것입니다 강제 형 변환을 할 수 있습니다. 작은 재현 가능한 예와 예상 결과를 보여주십시오. 'rowMeans (df1 [c1] 'col1', 'col2')], na.rm = TRUE) ' – akrun

+0

설명에 따르면'rowMeans'로 충분하다고 생각합니다 (위의 업데이트 된 주석을 확인하십시오) – akrun

+0

@akrun 샘플 데이터 세트를 공유하려고하는데 어떻게해야할지 모르겠다. 포럼에 처음 온거야! – Christopher

답변

1

감사 이해할 수있을 것이다. 하나가 NA이면 다른 것을 선택하고, 그렇지 않으면 평균을 취하십시오. 당신이 평균과 논리를 가지고

df2 <- df1 %>% mutate(col3 = ifelse(is.na(col1), col2, 
          ifelse(is.na(col2), col1, (col1+col2)/2))) 
+0

고맙습니다. 코드가 효과가 있었고 문제가 해결되었습니다. – Christopher

+0

우수, 내 대답을 upvote하시기 바랍니다 플래그를 확인해 주시겠습니까? –

+0

나는 그것을했다. 그러나 내가 upvote에 포럼에 너무나 새로운 것처럼 보인다. 그러나 감사 – Christopher

0

우리는 단지 rowMeans

df1$col3 <- rowMeans(df1[1:2], na.rm = TRUE)