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,后续分析可基于此进行