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

R语言基于行条件判断为Timepoint新增因子水平的方法

R实现新增Timepoint水平X的代码方案

我们可以通过按患者ID分组计算的方式完成需求,以下基于tidyverse套件实现,逻辑清晰易读:

步骤1:加载依赖包

library(dplyr)

步骤2:计算X时间点的所有行数据

按PatientID分组,每个患者对应一组A、B时间点的记录,按照给定的阈值规则生成X时间点的取值,代码中加入了非空判断避免NA值参与比较导致结果异常:

df_x <- df %>%
  group_by(PatientID) %>%
  summarise(
    Timepoint = "X",
    A = ifelse(!is.na(A[Timepoint == "B"]) & A[Timepoint == "B"] > 999, A[Timepoint == "B"], A[Timepoint == "A"]),
    B = ifelse(!is.na(B[Timepoint == "B"]) & B[Timepoint == "B"] > 986, B[Timepoint == "B"], B[Timepoint == "A"]),
    C = ifelse(!is.na(C[Timepoint == "B"]) & C[Timepoint == "B"] > 1000, C[Timepoint == "B"], C[Timepoint == "A"]),
    D = ifelse(!is.na(D[Timepoint == "B"]) & D[Timepoint == "B"] > 1030, D[Timepoint == "B"], D[Timepoint == "A"]),
    E = ifelse(!is.na(E[Timepoint == "B"]) & E[Timepoint == "B"] > 800, E[Timepoint == "B"], E[Timepoint == "A"]),
    G = ifelse(!is.na(G[Timepoint == "B"]) & G[Timepoint == "B"] > 950, G[Timepoint == "B"], G[Timepoint == "A"])
  ) %>%
  ungroup()

步骤3:合并数据得到最终结果

将生成的X时间点数据和原始数据合并,若需要将Timepoint转为含X水平的因子类型可执行最后一行可选代码:

df_final <- bind_rows(df, df_x)
# 可选:将Timepoint转为因子并指定水平顺序
df_final$Timepoint <- factor(df_final$Timepoint, levels = c("A", "B", "X"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 00:36:04