在R数据集指定列创建随机人工缺失值以测试Random Forest精度
在数据集指定列随机添加5-10%的人工缺失值(NA)
需求说明
需在数据集的ch4_flux_gaps列中随机生成占比5%-10%的人工缺失值(NA),用于测试Random Forest模型的预测精度。初始时ch4_flux与ch4_flux_gaps列数值完全一致,仅对后者进行缺失值处理。
示例数据集
TIMESTAMP <- c(2001:2020) ch4_flux <- c(67.36, 66.39, 65.39, 64.41, 63.52, 62.76, 62.16,61.76, 61.54,61.53,61.7,62.05,62.52, 63.09, 63.71, 64.33, 64.92, 65.46, 65.93, 66.32) ch4_flux_gaps <- c(67.36, 66.39, 65.39, 64.41, 63.52, 62.76, 62.16,61.76, 61.54,61.53,61.7,62.05,62.52, 63.09, 63.71, 64.33, 64.92, 65.46, 65.93, 66.32) distance <- c(1000,1000,1000,125.35,1000,1000,1000,5.50,1000,1000,1000,1000, 1000,1000,179.65,1000,1000,1000,1000,1000) CowNum <- c(0, 0, 0, 30, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0) dd <- data.frame(TIMESTAMP, ch4_flux, ch4_flux_gaps, distance,CowNum)
期望处理效果示例
处理后ch4_flux_gaps列示例:
ch4_flux_gaps <- c(67.36, 66.39, 65.39, NA, 63.52, NA, 62.16,61.76, 61.54,61.53,61.7,62.05,NA, 63.09, 63.71, 64.33, 64.92, 65.46, NA, NA)
实现代码
以下是在R中实现随机添加5%-10%缺失值的代码:
# 设置随机种子保证结果可重复 set.seed(123) # 获取ch4_flux_gaps列的行数 total_rows <- nrow(dd) # 随机生成要设置为NA的行数(占比5%-10%) na_count <- sample(round(total_rows*0.05):round(total_rows*0.1), 1) # 随机选择对应行数的索引 na_indices <- sample(total_rows, na_count) # 将选中的索引位置设置为NA dd$ch4_flux_gaps[na_indices] <- NA # 查看处理后的结果 dd$ch4_flux_gaps
代码说明
set.seed(123):固定随机种子,确保每次运行代码生成的缺失值位置一致,便于复现结果。na_count:通过sample函数在5%到10%的行数范围内随机选取要设置为NA的数量。na_indices:从所有行索引中随机挑选对应数量的位置,保证缺失值分布随机。- 最后将选中位置的
ch4_flux_gaps值替换为NA。
内容的提问来源于stack exchange,提问作者shrimp
相关产品推荐
相关产品推荐

