setwd("D:\\Rdownload\\lianxi\\dazuoye")  #设定工作路径
data <- read.csv("dazuoye.csv",header=T)
data=data[,-1]   #数据的第一列不是数值先去掉
rownames(data)=data[,1]  #用data的第一列为data的行重新命
missing_values <- is.na(data)  # 检查数据是否存在缺失值
for (col in names(data)) {
  mean_value <- mean(data[, col], na.rm = TRUE)
  median_value <- median(data[, col], na.rm = TRUE)
  if (abs(mean_value - median_value) < 4000) {  
    # 近似正态分布,用均值填充缺失值
    data[is.na(data[, col]), col] <- mean(data[, col], na.rm = TRUE)
  } else {
    # 偏态分布,用中位数填充缺失值
    data[is.na(data[, col]), col] <- median(data[, col], na.rm = TRUE)
  }
}  # 识别各列数据分布情况,判断是正态分布还是偏态分布:
unique_data <- data[!duplicated(data), ]  # 清理重复值
par(mai = c(2, 1, 1, 1))  # 调整边距,mai参数依次为下、左、上、右边距
boxplot(unique_data, main = "Boxplot of Data",cex.axis = 0.5,las = 2)  # 绘制箱线图识别异常值

for (col in names(unique_data)) {
  Q1 <- quantile(unique_data[, col], 0.25, na.rm = TRUE)
  Q3 <- quantile(unique_data[, col], 0.75, na.rm = TRUE)
  IQR <- Q3 - Q1
  lower_bound <- Q1 - 1.5 * IQR
  upper_bound <- Q3 + 1.5 * IQR
  unique_data <- subset(unique_data, unique_data[, col] >= lower_bound & unique_data[, col] <= upper_bound)
}  # 结合箱线图,处理异常值

# 最终得到处理后精准可靠的数据框 unique_data,后续分析可基于此进行