2014-02-20 2 views
0

실험 결과의 복제본을 나타내는 데이터 프레임의 열 수가 있습니다.이전 열의 가장 빈번한 값을 기반으로 새 열을 만듭니다. R

여기

 1a  2a  3a  4a  5a 
1  154  152  154  156  NA 
2  154  154  154  NA  NA 
3  154  154  154  154  NA 
4  154  154  154  154  NA 
5  154  NA  154  154  NA 
6  NA  NA  NA  154  NA 
7  154  154  NA  154  NA 
8  154  154  NA  154  NA 
9  154  NA  154  150  NA 
10  149  149  NA  149  149 

싶습니다 어떤 실시 예들은 다른 컬럼들 각각에서 발생하는 값 (2> =)가 다른 열을 생성하는 것이다.

 1a  2a  3a  4a  5a score 
1  154  152  154  156  NA 154 
2  154  154  154  NA  NA 154 
3  154  154  154  154  NA 154 
4  154  154  154  154  NA 154 
5  154  NA  154  154  NA 154 
6  NA  NA  NA  154  NA  NA 
7  154  154  NA  154  NA 154 
8  154  154  NA  154  NA 154 
9  154  NA  154  150  NA 154 
10  149  149  NA  149  149 149 

편집 : 위의 수정 된 예제. 모드 사용에 대한 flodel의 대답은 처음에는 성공적 이었지만 한 번만 발생 했더라도 값을 사용했습니다. 각 행에 2> x 값이 없으면 NA 또는 문자 스트링 (어느 것이 더 쉬울 지)을 올리고 싶습니다.

+2

중간 점은 작동하지 않습니다. 더 이상 아무 일도 없을 때 어떤 일이 발생합니까?> = 2 회 또는 동일한 행에서 두 번 점수가 두 번 발생합니까? – rawr

+0

완전히 - 그것은 빠른 수정 시도였습니다. 위의 내용을 바로 잡을 것입니다. – scigimp

답변

1

당신은 자신을 정의 할 수있을만큼 쉬운 중간하지만 모드를 찾고되지 않습니다

Mode <- function(x, min.freq = 1L) { 
    f <- table(x) 
    k <- f[f >= min.freq] 
    if (length(k) > 0L) as.numeric(names(f)[which.max(f)]) else NA 
} 

test$score <- apply(test2, 1, Mode, min.freq = 2L) 
+0

처음에는 두 개의 동일한 결과가없는 경우 (위 예제에는 아무 것도 포함하지 않았 음) 또는 동일한 금액이있는 경우 서로 다른 값을 가지면 둘 중 하나를 출력합니다. 나는 내 질문을 더 명확히 할 것이다 – scigimp

+0

편집 됨. 다시 시도하십시오. – flodel

+0

완벽 - 2 개 미만의 값과 일치하는 금액 모두에서 효과가 있습니다. – scigimp

관련 문제