2014-07-04 4 views
0

조건에 따라 데이터 프레임 (이름 icorr)을 변경하려고합니다. 데이터 프레임의 모든 항목에 대해이 작업을 수행하려고합니다. 나는 매우 신기 롭고 다음을 시도했다 :조건부로 데이터 프레임의 데이터를 변환하는 중

if(icorr<0.01) {icorr <- "***" 
    } else if(icorr<0.05) {icorr <- "**" 
    } else if(icorr<0.1) {icorr <- "*" 
    } else {icorr <- NA} 

확실히 작동하지 않는다. 어떤 조언도 좋을 것입니다.

감사

+0

이 아마도 당신이'cut'를 사용할 수 사용할 수 있습니다? 'cut (icorr, c (0, 0.01, 0.05, 0.1, Inf)), right = F, include.lowest = T, labels = c ("***", "**", "*", NA))' –

답변

2

이 작동하지 않는 경우 재현 할 예제를 제공하시기 바랍니다

icorr <- ifelse(icorr<0.01, "***", 
        ifelse(icorr<0.05, "**", 
         ifelse(icorr<0.1, "*", NA))) 

을 시도 할 수 있습니다.

ifelseif의 벡터화 버전입니다. 즉, 전체 벡터에 대해 작업을 수행하려면 ifelseif보다 선호되는 것입니다.

2

귀하의 조건에 맞는 행을 선택하려면 R에게 알려야합니다.

그래서, 예를 들면 :

icorr[icorr < 0.01] <- "***" 

icorr<0.01TRUEFALSE의 배열을 반환하기 때문에 작동하는 당신이 할 수있는 인덱스 배열을 가진.

0

당신은 findInterval

icorr <- c(0.002, 0.05, 0.06, 0.07, 0.1, 0.2, 0.02, 0.3, 0.03,0.049) 
c("***","**", "*", NA)[findInterval(icorr, c(-Inf,0.01, 0.05, 0.1, Inf))] 
#[1] "***" "*" "*" "*" NA NA "**" NA "**" "**" 
관련 문제