2017-01-31 7 views
1

R의 열 목록 평균을 취하려고하고 있는데 문제가 발생했습니다.R의 다중 열 평균

A B C D 
1 2 3 4 
5 6 7 8 
9 10 11 12 

내가 뭘하려고 오전 열 C (A, C)의 평균을 가지고 값으로 저장라고 (E)뿐만 아니라 열 C의 평균 (B를 :의 내가 있다고 가정 해 봅시다 , D) 그리고 다른 값으로 말하면서 F라는 말로 구하십시오. 가능합니까?

E F 
2 3 
6 7 
10 11 

답변

2

체크 아웃 dplyr 얻을 apply를 사용

library(dplyr) 
df <- df %>% mutate(E=(A+C)/2, F=(B+D)/2) 
df 

    A B C D E F 
1 1 2 3 4 2 3 
2 5 6 7 8 6 7 
3 9 10 11 12 10 11 
2

우리는 컬럼 1 & 2 데이터 세트 3 & 4와 다른 하나의 서브 세트 (2)에 의해 서로 분할을 추가하고, setNames

setNames((df1[1:2] + df1[3:4])/2, c("E", "F")) 
# E F 
#1 2 3 
#2 6 7 
#3 10 11 

와 열 이름을 변경할 수 또는 재활용 논리 벡터를 사용하여 list에 유지하고 list (sapply 사용)을 반복하고을 얻는 다른 옵션은 rowMeans입니다.3210

i1 <- c(TRUE, FALSE) 
sapply(list(df1[i1], df1[!i1]), rowMeans) 

또는 또 다른 옵션은 데이터 세트 unlist입니다 array로 변환하고 mean

apply(array(unlist(df1), c(3, 2, 2)), c(1,2), mean) 
+0

내가 가지고있는 경우를 a1, a2, a3, b1, b2, b3, c1, c2, c3 등의 열 목록을 작성하고 평균 점수 o를 원했습니다. f 열 a1, a2, a3을 열에 넣고 b와 c를 사용하여 a, b, c의 평균을 각 문자의 단일 열에 입력하면됩니다. –

+1

@DanteSmith이 경우,'sapply (split.default (df1, sub ("\\ d +", ", colnames (df1))), rowMeans)' – akrun

+0

\\ d +는 어디에서 작동합니까? 그 열을 숫자로 나누고 있습니까? –