我有一些关于NFL球员统计的数据。我想根据观察的年份将其划分为训练和测试数据集。
特别是,我的数据包含了从1999年到2019年的球员统计观察数据。我希望随机选择20%的年份(4年)作为测试集,然后剩下的17年数据作为训练集。
我目前的代码如下:
# 设置种子set.seed(43)# 确定测试集中应包含多少年数据split <- round(nrow(as.data.frame(table(data$year)))*0.20)# 随机选择(split)年份作为测试集test_years <- sample(data$year, split)
我想知道如何编写以下代码:
train <- data where year is not in test_years
我该如何实现这一点?
回答:
我们可以使用%in%
创建一个逻辑向量,然后使用否定操作符(!
)将TRUE/FALSE转换为FALSE/TRUE,并对’data’的行进行子集划分
train <- data[!data$year %in% test_years,]