>

SPSS에서 R로 코드를 다시 작성하는 데 도움을 줄 수 있습니까?

SPSS 코드 :

RECODE variable1
(1,2=1)
(3 THRU 8 =2)
(9, 10 =3)
(ELSE = SYSMIS)
INTO variable2

다른 값으로 새 변수를 만들 수 있습니다. 그러나 SPSS와 동일한 변수를 사용하고 싶습니다.

많은 감사합니다.


  • 답변 # 1

       x <- y<- 1:20
        x
        [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
        y[x %in% (1:2)] <- 1
        y[x %in% (3:8)] <- 2
        y[x %in% (9:10)] <- 3
        y[!(x %in% (1:10))] <- NA
        y
        [1]  1  1  2  2  2  2  2  2  3  3 NA NA NA NA NA NA NA NA NA NA
    
    

  • 답변 # 2

    spss 코드 레코딩과 매우 유사한 코딩 기능을 작성했습니다. 여기를 참조하십시오

    variable1 <- -1:11
    recodeR(variable1, c(1, 2, 1), c(3:8, 2), c(9, 10, 3), else_do= "missing")
    NA NA  1  1  2  2  2  2  2  2  3  3 NA
    
    
    이 함수는 이제 다른 예제에서도 작동합니다. 이것이 함수 정의 방법입니다

    recodeR <- function(vec_in, ..., else_do){
    l <- list(...)
    # extract the "from" values
    from_vec <- unlist(lapply(l, function(x) x[1:(length(x)-1)]))
    # extract the "to" values
    to_vec <- unlist(lapply(l, function(x) rep(x[length(x)], length(x)-1)))
    # plyr is required for mapvalues
    require(plyr)
    # recode the variable
    vec_out <- mapvalues(vec_in, from_vec, to_vec)
    # if "missing" is written then all outside the defined range will be missings. 
    # Otherwise values outside the defined range stay the same
    if(else_do == "missing"){
    vec_out <- ifelse(vec_in < min(from_vec, na.rm=T) | vec_in > max(from_vec, na.rm=T), NA, vec_out)
    }
    # return resulting vector
    return(vec_out)}
    
    

관련 자료

  • 이전 하이퍼 레저 작성기 도구에서 개인 네트워크를 만드는 방법
  • 다음 javascript - 변수 값은 각각 전에 호출 한 후에 변경되지 않습니까?