为什么在R中分割数据时,我的代码会产生NA?

问题描述 投票:0回答:1

我试图将一个训练集分割成两组:训练集和验证集。它确实将其分割了,但出于某种原因,它删除了验证集中的32行,并将NA放在那里。在原始数据集中没有NA。

这就是代码。

set.seed(123)
sample <- sample.int(n = nrow(traindata), size = floor(.2*nrow(traindata)), replace = F)
traindata <- traindata[-sample, ] #creating training set
validatiedata  <- traindata[sample, ] #creating validation set

print(traindata)
head(traindata)
tail(traindata)

print(validatiedata)
head(validatiedata)
tail(validatiedata)

我试过用不同的代码来分割数据。

library(caTools)
set.seed(123)
split = sample.split(traindata, SplitRatio = 0.8)

# Create training and testing sets
train = subset(traindata, split == TRUE)
test = subset(traindata, split == FALSE)

dim(train); dim(test)

head(traindata)
tail(traindata)

head(validatiedata)
tail(validatiedata)

第二段代码也不行 它把数据分割错了,还在验证集中创建了NA。

有什么建议吗?

r testing set na code-splitting
1个回答
1
投票

你创建的数据帧 traindatavalidatiedata 顺序不对。

traindata <- traindata[-sample, ] # Removes rows from traindata
validatiedata  <- traindata[sample, ] # Tries to extract rows that no longer exists, resulting in NA:s

如果你改变顺序,你就不会有这个问题。

validatiedata  <- traindata[sample, ]
traindata <- traindata[-sample, ]
© www.soinside.com 2019 - 2024. All rights reserved.