모든 DataFrame을 가져 와서 각 열을 평가하여 요약 테이블을 반환하는 함수를 작성했습니다. 이제 Answer Label
열로 분류 된 요소 인 Variable Name
에 대해 Variable Type
및 Answer Code
을 한 행 아래로 이동하고 싶습니다.R : DataFrame 형식 지정 조작
샘플 코드 :이 데이터 집합 MASS::anorexia
를 사용
CreateCodebook <- function(dF){
numbercols <- length(colnames(dF))
table <- data.frame()
for (i in 1:length(colnames(dF))){
AnswerCode <- if (sapply(dF, is.factor)[i]) 1:nrow(unique(dF[i])) else NA
AnswerLabel <- if (sapply(dF, is.factor)[i]) as.vector(unique(dF[order(dF[i]),][i])) else "Open ended"
VariableName <- if (length(AnswerCode) > 1) c(colnames(dF)[i],
rep(NA,length(AnswerCode) - 1)) else colnames(dF)[i]
VariableLabel <- if (length(AnswerCode) > 1) c(colnames(dF)[i],
rep(NA,length(AnswerCode) - 1)) else colnames(dF)[i]
VariableType <- if (length(AnswerCode) > 1) c(sapply(dF, class)[i],
rep(NA,length(AnswerCode) - 1)) else sapply(dF, class)[i]
df = data.frame(VariableName, VariableLabel, AnswerLabel, AnswerCode, VariableType, stringsAsFactors = FALSE)
names(df) <- c("Variable Name", "Variable Label", "Variable Type", "Answer Code", "Answer Label")
table <- rbind(table, df)
}
rownames(table) <- 1:nrow(table)
return(table)
}
, 내 기능에서이 출력을 얻을 :
이Variable Name Variable Label Variable Type Answer Code Answer Label
1 Treat Treat CBT 1 factor
2 <NA> <NA> Cont 2 <NA>
3 <NA> <NA> FT 3 <NA>
4 Prewt Prewt Open ended NA numeric
5 Postwt Postwt Open ended NA numeric
이
원하는 출력 :
Variable Name Variable Label Variable Type Answer Code Answer Label
1 Treat Treat <NA> NA factor
2 <NA> <NA> CBT 1 <NA>
3 <NA> <NA> Cont 2 <NA>
4 <NA> <NA> FT 3 <NA>
5 Prewt Prewt Open ended NA numeric
6 Postwt Postwt Open ended NA numeric
이 기능을 테스트 할 샘플 입력을 [재현 예 (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) 확인 제공합니다 . – MrFlick
고맙습니다. 지금 내 게시물에 재현 가능한 예를 제공했습니다. –