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

如何统计从访视1到访视2的状态转移次数并生成转移计数数据框?

处理状态转移矩阵的R实现

针对你提供的随访数据集,这里给出生成访视1到访视2状态转移次数矩阵的具体步骤:

1. 构建并整理数据

先把原始向量组合成数据框,然后筛选出访视1和访视2的记录,将数据转为宽格式,让每个患者的两次访视状态在同一行:

# 创建原始数据框
df <- data.frame(
  ID = c(1,1,1,2,2,2,3,3,3),
  Visit = c(1,2,3,1,2,3,1,2,3),
  State = c(2,1,1,3,2,1,2,3,1)
)

# 加载tidyr包处理数据格式
library(tidyr)
# 筛选访视1、2的记录,转宽格式
trans_data <- df %>%
  filter(Visit %in% c(1,2)) %>%
  pivot_wider(names_from = Visit, values_from = State, names_prefix = "Visit")

2. 生成转移次数矩阵

用table()函数统计两次访视状态的交叉频数,再转为数据框格式,明确行列代表的含义:

# 统计转移次数
trans_table <- table(trans_data$Visit1, trans_data$Visit2)

# 转换为数据框并设置清晰的行列名
trans_df <- as.data.frame.matrix(trans_table)
colnames(trans_df) <- paste0("到状态", colnames(trans_df))
rownames(trans_df) <- paste0("从状态", rownames(trans_df))

最终结果

运行代码后得到的trans_df就是所需的转移次数统计数据框,结果如下:

到状态1 到状态2 到状态3
从状态2      1      0      1
从状态3      0      1      0

其中行对应访视1的状态,列对应访视2的状态,对角线位置的数值代表未发生状态转移的患者计数(此示例中没有患者在两次访视间保持状态不变,因此对角线均为0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:17:35