• Daum
  • |
  • 카페
  • |
  • 테이블
  • |
  • 메일
  • |
  • 카페앱 설치
 
카페정보
Biostatistics
 
 
 
 

친구 카페

 
 
카페 게시글
R을 이용한 임상시험 데이터분석 (실제문제 ) Data Cleaning - Functional Programming 공부하신 후 응모하세요
cardiomoon 추천 0 조회 195 14.09.21 15:13 댓글 4
게시글 본문내용
 
다음검색
첨부된 파일
댓글
  • 14.09.23 20:49

    첫댓글 재밌네요! 역시 문제를 풀어봐야 실력이 느네요.
    재밌는 문제 올려주셔서 감사합니다 :)

    isCategorical <- function(col, type=c(0,1)){
    lvl <- levels(factor(col))
    if(all(lvl %in% type))
    return(TRUE)
    else
    return(FALSE)
    }

    result <- lapply(data, function(col){
    if(isCategorical(col, c(0,1))){
    col[col==0] <- "Yes"
    col[col==1] <- "No"
    }
    return(col)
    })

    result <- as.data.frame(result)

    head(result)
    str(result)

    틀렸다면 조언 부탁드립니다!

  • 작성자 14.09.25 14:27

    틀리지는 않으셨구요 조언입니다.

    1. isCategorical 함수는 한줄로 줄일수 있읍니다.
    isCategorical <- function(x) all(unique(x) %in% c(0,1))

    # all 함수 자체가 TRUE, FALSE를 반환합니다. 따라서 if else는 필요없읍니다.
    # levels(factor(x)) 대신 unique(x) 가 더 간단해 보입니다.

    2. 이부분은 ifelse함수를 쓰면 좋을듯합니다. 개인취향이지만요

    col[col==0] <- "Yes"
    col[col==1] <- "No"

    이부분을 col=ifelse(col==0,"Yes","No")

    3. 함수 첫부분에 명시적으로 쓸때 말고는 보통 return(col) 말고 col을 쓰는 것이 보통입니다.

  • 14.09.25 20:16

    @cardiomoon 오 정말이네요! 감사합니다 !!

  • 작성자 14.09.23 21:33

    음 그렇게 해도 되는군요. 또 다른 분은요?

최신목록