# **PRD:Tool C \- 科研数据编辑?(The Research Editor)** | 文档版本 | V2.1 (扁平?\+ 长宽转换? | | :---- | :---- | | **产品形?* | Web 端在线编辑器(Local-First 架构,类 Excel 体验?| | **核心价?* | 提供?Excel 更懂科研的轻量级清洗工具。通过“扁平化工具栏”和“智能侧边栏”,让医生在不写代码的情况下完成变量加工、质量治理和样本筛选?| | **目标用户** | 对数据质量有洁癖的科研人员、临床医?| ## **一?产品流程?(User Flow)** 数据导入(上传/流转) \-\> 性能准入与降采样 \-\> 在线清洗(工具栏全局操作 \+ 侧边栏列操作) \-\> 版本快照 \-\> 导出分析? ## **二?核心功能需?(Functional Requirements)** ### **1\. 顶部扁平工具?(The Flat Toolbar) —?核心交互** *不再使用复杂?Tab 分组,核心科研功能一字排开,所见即所得? #### **1.1 变量加工 (Variable Processing)** * **P0: 生成新变?(Generate Variable):** * **功能?* 弹窗提供公式构建器? * **支持?* 加减乘除、括号、以?ln() (对数)、exp() 等医学常用函数? * **场景?* 计算 BMI \= weight / (height/100)^2? * **P0: 计算时间?(Time Delta):** * **功能?* 选择 起始日期??结束日期列,自动生成差值? * **单位?* 支持?天、月、年 输出? * **场景?* 计算 年龄、住院天数、PFS/OS? * **P0: 长宽转换 (Reshape/Pivot) —?\[V2.1 新增\]:** * **功能?* 将“一人多行(长表)”转换为“一人一行(宽表)”? * **配置项:** 1. **唯一ID (Index):** ?病人ID? 2. **区分?(Columns):** ?就诊时间 ?次序 (用于生成后缀)? 3. **值列 (Values):** ?白细? B?(需要铺平的数据)? * **场景?* 处理重复测量数据,为 SPSS 重复测量方差分析做准备? #### **1.2 数据治理 (Data Governance)** * **P0: 拆分数据?(Split Dataset):** * **功能?* 按某一列的唯一值(如“中心ID”),将大表拆分为多?Excel 文件?Sheet? * **P0: 跨列规则检?(Cross-column Logic):** * **功能?* 定义逻辑规则(如 IF 性别='? AND 怀?'?),在网格中高亮错误行? #### **1.3 样本筛?(Cohort Selection)** * **P0: 构建入排标准 (Cohort Builder):** * **功能?* 高级筛选器。支持多条件组合(AND/OR)? * **输出?* 筛选结果可“另存为新数据集”或“标记为排除”? ### **2\. 右侧智能侧边?(Smart Insight Panel) —?交互灵魂** *当用户点击表格的某一列时,侧边栏自动滑出,根据列类型提供特定的清洗工具? #### **2.1 选中“数值型”列(如年龄、白细胞?* * **P0: 统计概览?* 显示分布直方?(Histogram)、最大值、最小值? * **P0: 异常值检测:** * 自动标记偏离分布(如 \> 3σ)的值? * 提供按钮:处理异常(支持截断或置空)? * **P0: 生成分类变量 (Binning):** * **功能?* 将连续数值转为分类? * **交互?* 设置切点(如 60),生成新列(\<60, \>=60)? * **P0: 缺失值填补:** 提供 均值、中位数 填补选项? #### **2.2 选中“文?分类”列(如性别、诊断)** * **P0: 统计概览?* 显示频次?(Bar Chart)? * **P0: 数值映?(Recode):** * **功能?* 将文本转为统计数值? * **交互?* 列出所有唯一值(Male, Female),用户输入目标值(1, 0)? * **P0: 设为敏感字段 (Masking):** 一键脱敏(替换?\*\*\*\*\*\*)? * **P1: 智能纯化 (Smart Clean):** 若检测到 \>10、\<0.01 等含符号数值,提供一键提取数字功能? ### **3\. 超级网格 (The Grid)** * **P0: 视觉反馈?* * **空值:** 背景显示淡红色? * **脏数据:** 类型不匹配的值显示紫色文字? * **列头图标?* 明确标识变量类型(\# 数? A 文本, 📅 日期)? * **P0: 基础操作?* 列宽拖拽、列排序、双击单元格编辑? ### **4\. 性能与导?(System)** * **P0: 性能准入 (Guardrails):** * 行数 \< 5万:全量加载? * 行数 \> 5万:提示降采样预览,或引导使用后端批处理? * **P1: 自动快照 (Auto-Save):** ?10 次操作自动保存到 IndexedDB,防止浏览器崩溃丢失? * **P0: 导出定义?* * 导出 Excel/CSV? * **加分项:** 导出时附带变量类型定义(Metadata)? ## **三?界面原型参?(UI Reference)** 请参?工具C\_科研数据编辑器\_原型设计\_V2\_演示.html? * **布局?* 顶部单行工具?\+ 中间全屏网格 \+ 右侧可折叠侧边栏? * **交互?* 点击“长宽转换”按钮弹出配置模态框? ## **四?风险规避 (Risk Mitigation)** 1. **计算精度丢失?* * *解法? 必须集成 math.js 库进行所有数学运算? 2. **Pivot 导致内存溢出?* * *问题? 长宽转换可能会导致列数爆炸(Column Explosion)? * *解法? 在执?Pivot 前,预计算结果列数。如果列?\> 1000,阻止操作并提示用户减少“区分列”的唯一值数量