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

如何识别指定列缺失行并完成缺失ID基线统计等R语言实现

R语言实现指定数据处理需求

首先加载原始数据:

ID <- c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3)
X1<-c(1.1,0.2,0.4,0.8,1.3,2.3,1.1,3.2,NA,0.8,2.1,NA,1.1,0.2,0.4,0.8,NA,0.6)
X2<-c(0.8,NA,1.2,0.3,NA,NA,0.8,NA,1.5,2.7,2.2,NA,0.8,3.1,1.7,0.3,1.1,2.4)
X3<-c(0.1,0.3,1.1,2.2,0,NA,0.1,3.3,1.4,2.3,0,NA,NA,0.3,2.8,2.3,0,NA)
Time<-c("baseline","week1","week2","week3","week4","week5","baseline","week1","week2","week3","week4","week5","baseline","week1","week2","week3","week4","week5")
data<-data.frame(ID,X1,X2,X3,Time)

需求1:统计缺失值数量并计算对应ID的baseline均值±标准差

统计各列缺失值数量

# 统计X1、X2、X3的缺失值数量
na_counts <- colSums(is.na(data[, c("X1", "X2", "X3")]))
print(na_counts)

运行后会输出每列的缺失值个数,例如X1有3个缺失、X2有4个缺失、X3有4个缺失。

计算存在缺失的ID的baseline均值±标准差

先定位所有存在缺失值的ID,再筛选这些ID的baseline数据进行统计:

# 若未安装dplyr包,先运行 install.packages("dplyr")
library(dplyr)

# 找出所有在X1/X2/X3中存在缺失的ID
missing_ids <- unique(data$ID[apply(is.na(data[, c("X1", "X2", "X3")]), 1, any)])

# 筛选baseline数据并计算均值、标准差,整理为均值±标准差格式
baseline_stats <- data %>%
  filter(ID %in% missing_ids, Time == "baseline") %>%
  summarise(
    across(
      X1:X3,
      list(
        mean = ~round(mean(., na.rm = TRUE), 2),
        sd = ~round(sd(., na.rm = TRUE), 2)
      )
    )
  ) %>%
  mutate(
    X1 = paste0(X1_mean, " ± ", X1_sd),
    X2 = paste0(X2_mean, " ± ", X2_sd),
    X3 = paste0(X3_mean, " ± ", X3_sd)
  ) %>%
  select(X1, X2, X3)

print(baseline_stats)

需求2:找出X2、X3首次出现缺失值的时间点

按ID分组,定位每个ID下X2、X3第一次出现缺失的时间点:

first_na_time <- data %>%
  group_by(ID) %>%
  summarise(
    first_na_X2 = ifelse(any(is.na(X2)), Time[which(is.na(X2))[1]], "无缺失"),
    first_na_X3 = ifelse(any(is.na(X3)), Time[which(is.na(X3))[1]], "无缺失")
  )

print(first_na_time)

需求3:找出各列对应的存在缺失的ID

分别提取X1、X2、X3中存在缺失值的ID:

# X1存在缺失的ID
X1_missing_ids <- unique(data$ID[is.na(data$X1)])
# X2存在缺失的ID
X2_missing_ids <- unique(data$ID[is.na(data$X2)])
# X3存在缺失的ID
X3_missing_ids <- unique(data$ID[is.na(data$X3)])

# 输出结果
cat("X1存在缺失的ID:", paste(X1_missing_ids, collapse = ", "), "\n")
cat("X2存在缺失的ID:", paste(X2_missing_ids, collapse = ", "), "\n")
cat("X3存在缺失的ID:", paste(X3_missing_ids, collapse = ", "), "\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:46:17