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

基于ID与条件计算多行均值并重塑为宽格式

解决思路与代码实现

步骤1:修正数据类型

你用cbind创建的数据框会把value列转为字符型,首先要将其转回数值型:

df$value <- as.numeric(df$value)

步骤2:拆分condition列,提取核心信息

用字符串拆分工具分离condition中的参与者与分析项:

library(tidyr)
df <- df %>%
  separate(condition, into = c("participant", "analysis"), sep = " - ")

步骤3:按参与者计算符合要求的均值

按participant分组,仅当该组非NA的有效数据≥2个时计算均值,否则返回NA:

library(dplyr)
mean_df <- df %>%
  group_by(participant) %>%
  summarize(
    avg_value = ifelse(sum(!is.na(value)) >= 2, mean(value, na.rm = TRUE), NA)
  )

步骤4:重塑为宽格式

分两种场景实现:

  • 场景1:仅展示参与者及其对应均值的宽表
wide_df <- mean_df %>%
  pivot_wider(names_from = participant, values_from = avg_value)
  • 场景2:保留原始分析项,同时展示各参与者的分析值与均值
wide_full_df <- df %>%
  left_join(mean_df, by = "participant") %>%
  pivot_wider(names_from = participant, values_from = c(value, avg_value))

结果说明

运行后会得到符合预期的结果:

  • Participant 1有6个有效值,均值为4.1667
  • Participant 2有5个有效值,均值为5
  • Participant 3无有效数据,均值保留NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:35:08