# 读取原始数据并整理保留前6列
data = readxl::read_excel("chl.xlsx")
# 转换数据为数据框
data <- as.data.frame(data)
# 定义生成模拟数据的函数
generate_custom_data <- function(mean_chla, sd_chla, n) {
runif(n, min = mean_chla - 3 * sd_chla, max = mean_chla + 3 * sd_chla)
}
generate_sim_data <- function(intensity, layer) {
case_when(
intensity == 1000 & layer == "0-2" ~ pmax(generate_custom_data(3, 1, 1), 0),
intensity == 100 & layer == "0-2" ~ pmax(generate_custom_data(2, 0.5, 1), 0),
intensity == 10 & layer == "0-2" ~ pmax(generate_custom_data(1.5, 0.5, 1), 0),
intensity == 0 & layer == "0-2" ~ pmax(generate_custom_data(1, 0.4, 1), 0),
intensity == 1000 & layer == "2-4" ~ pmax(generate_custom_data(2.7, 1, 1), 0),
intensity == 100 & layer == "2-4" ~ pmax(generate_custom_data(1.7, 1, 1), 0),
intensity == 10 & layer == "2-4" ~ pmax(generate_custom_data(1.2, 0.8, 1), 0),
intensity == 0 & layer == "2-4" ~ pmax(generate_custom_data(0.9, 0.4, 1), 0),
intensity == 1000 & layer == "4-6" ~ pmax(generate_custom_data(2.5, 1, 1), 0),
intensity == 100 & layer == "4-6" ~ pmax(generate_custom_data(1.4, 0.3, 1), 0),
intensity == 10 & layer == "4-6" ~ pmax(generate_custom_data(1.1, 0.3, 1), 0),
intensity == 0 & layer == "4-6" ~ pmax(generate_custom_data(0.6, 0.3, 1), 0),
TRUE ~ NA_real_
)
}
# 重复调用生成模拟数据函数6次,并将结果合并成数据框
simulated_data2 <- data %>%
mutate(
sim_data_1 = generate_sim_data(Intensity, layer),
sim_data_2 = generate_sim_data(Intensity, layer),
sim_data_3 = generate_sim_data(Intensity, layer),
sim_data_4 = generate_sim_data(Intensity, layer),
sim_data_5 = generate_sim_data(Intensity, layer),
sim_data_6 = generate_sim_data(Intensity, layer)
)
names(simulated_data2)[5:10] <- paste0("Chl-a", 1:6)