연속/정수 변수에 대해 누락 값을 대체하는 평균을 사용하고 범주 변수에 대해 누락 값을 대체하기 위해 모드를 사용하는 함수를 작성해야합니다.누락 된 값을 평균 및 모드로 바꾸기 (사용자 정의 함수)
데이터 I는 모드 기능이 내장 된 데이터 세트의 첫 번째 열 요소 유형, 두 번째 및 세 번째 열의 숫자이다이다
X <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/credit-screening/crx.data", header = FALSE, na.strings = '?')
.....
신용 검사 세트로부터 온다
mode_function <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
의도 한대로 작동합니다. 내가 데이터 세트에서 사용하고
전체 기능은
broken <- function(data){
for(i in 1:ncol(data)){
if(is.factor(data[,i])){
data[is.na(data[,i]),i] <- mode_function(data[,i])
}
else{
data[is.na(data[,i]),i] <- mean(data[,i], na.rm = TRUE)
}
}
return(data)
}
문제 :이 기능을 실행하고 아무것도 내 데이터 세트에서 변경되지 않습니다. 함수가 실행되기 전과 동일한 값의 누락 된 값이 있습니다.
기능 밖의이 줄은 의도 한대로 작동합니다. 평균을 다루는 코드와 동일합니다.
data[is.na(data[,i]),i] <- mode_function(data[,i])
하지만 한 번 동일한 기능을 사용하여 동일한 작업을 수행하려고하면 아무 일도 일어나지 않습니다.
[재현 가능한 예] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)와 예상되는 결과를 주면 도움이되기 쉽습니다. –