2017-12-16 7 views
0

저는 PimaIndianDiabetes를 사용하여이 R 최소 작업 환경을 갖추고 있습니다.여러 개의 확률로 "PimaIndiansDiabetes"에 대해 IFELSE를 사용하여 교육/테스트 세트로 데이터를 분할하는 방법은 무엇입니까?

#load required library 
    library(mlbench) 
    #load Pima Indian Diabetes dataset 
    data(PimaIndiansDiabetes) 
    #set seed to ensure reproducible results 
    set.seed(42) 
    #split into training and test sets 
    PimaIndiansDiabetes[,train] <- ifelse(runif(nrow(PimaIndiansDiabetes)) 
    <0.8,1,0) 
    #separate training and test sets 
    trainset <- PimaIndiansDiabetes[PimaIndiansDiabetes$train==1,] 
    testset <- PimaIndiansDiabetes[PimaIndiansDiabetes$train==0,] 
    #get column index of train flag 
    trainColNum <- grep(“train”,names(trainset)) 
    #remove train flag column from train and test sets 
    trainset <- trainset[,-trainColNum] 
    testset <- testset[,-trainColNum] 
    #get column index of predicted variable in dataset 
    typeColNum <- grep(“diabetes”,names(PimaIndiansDiabetes)) 

당면한 문제는 R 코드에 지정된 확률로 IFELSE 기능을 사용하여 교육 및 테스트 세트로 데이터를 분리하는 것입니다.

PimaIndiansDiabetes[,train] <- ifelse(runif(nrow(PimaIndiansDiabetes)) 
            <0.8,1,0) 

ifelse에서 실수가 있었다

답변

1

잘 작동합니다 :

ifelse(runif(nrow(PimaIndiansDiabetes)) 
             <0.8,1,0) 

하지만 당신은 새 열 (대신 기차의 '기차')를 할당 할 문자열을 사용할 필요가

PimaIndiansDiabetes[,'train'] <- ifelse(runif(nrow(PimaIndiansDiabetes)) 
             <0.8,1,0) 

'trainColNum'을 선택하지 않은 경우 다음과 같이 할 수 있습니다.

trainColNum <- which(colnames(PimaIndiansDiabetes) == 'train') 

은 또는 당신은 당신이 [ PimaIndiansDiabetes에 나를 위해, 기차 문제를 지적하시기 바랍니다 수있는 당뇨병 열

typeColNum <- which(colnames(PimaIndiansDiabetes) == 'diabetes') 
+0

에 대한

library(dplyr) trainset <- trainset %>% select(-train) testset <- testset %>% select(-train) 

같은 열을 제거하기 위해 dplyr 패키지를 사용 ] <- ifelse (runif (nove (PimaIndiansDiabetes)) <0.8,1,0) – economia

+0

내 대답을 편집합니다. 변수 열을 사용하여 새 열을 지정하려고하면 오류가 발생하지만 'train'문자열은 – Linus