You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中补全缺失的Posttest参与者数据:用均值填充分数

在R语言中补全未参加Posttest的学生数据并填充平均分

先把你提供的示例数据转换成可直接运行的R代码,同时清理掉Student_ID里的星号标记:

# 构造示例数据
df <- data.frame(
  Test = c(rep("Pretest", 6), rep("Posttest", 4)),
  Student_ID = c("001", "002*", "003", "004", "005*", "006", "001", "003", "004", "006"),
  Scores = c(70, 65, 75, 60, 60, 67, 80, 76, 55, 79),
  stringsAsFactors = FALSE
)

# 清理Student_ID中的星号
df$Student_ID <- gsub("\\*", "", df$Student_ID)

下面提供两种实现方式,推荐用tidyverse工具包,代码更简洁直观:

方法一:使用tidyverse工具包

library(tidyverse)

# 获取所有学生的唯一ID,确保不遗漏任何学生
all_students <- df %>% pull(Student_ID) %>% unique()

# 计算Posttest的平均分(仅用已参加测试的学生分数)
posttest_avg <- df %>% 
  filter(Test == "Posttest") %>% 
  summarize(avg_score = mean(Scores)) %>% 
  pull(avg_score)

# 补全Posttest数据,为缺失学生填充平均分
complete_posttest <- df %>% 
  filter(Test == "Posttest") %>% 
  complete(Student_ID = all_students) %>%  # 补全所有学生ID
  mutate(
    Test = "Posttest",  # 统一Test列值
    Scores = replace_na(Scores, posttest_avg)  # 替换缺失分数为平均分
  )

# 查看最终结果
print(complete_posttest)

运行后,002和005的Posttest分数会被填充为72.5(也就是现有Posttest分数的平均值:(80+76+55+79)/4=72.5)。

方法二:基础R实现(无需额外包)

如果不想加载工具包,可以用基础R代码完成:

# 获取所有学生ID
all_students <- unique(df$Student_ID)

# 计算Posttest平均分
posttest_scores <- df$Scores[df$Test == "Posttest"]
posttest_avg <- mean(posttest_scores)

# 筛选现有Posttest数据
existing_posttest <- df[df$Test == "Posttest", c("Student_ID", "Scores")]

# 找出未参加Posttest的学生
missing_students <- setdiff(all_students, existing_posttest$Student_ID)

# 为缺失学生创建数据行
missing_rows <- data.frame(
  Test = rep("Posttest", length(missing_students)),
  Student_ID = missing_students,
  Scores = rep(posttest_avg, length(missing_students)),
  stringsAsFactors = FALSE
)

# 合并数据并排序
complete_posttest <- rbind(existing_posttest, missing_rows)
complete_posttest <- complete_posttest[order(complete_posttest$Student_ID), ]

# 查看结果
print(complete_posttest)

两种方法最终得到的结果一致,你可以根据自己的习惯选择使用。

内容的提问来源于stack exchange,提问作者Faisal Mustafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:05:27