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

如何用dplyR将生存分析宽表转长表:将死亡蝇数量转为二进制状态行

解决方法

你可以结合dplyr和tidyr的uncount()函数实现这个宽转长的需求,具体步骤如下:

  1. 加载包含dplyr和tidyr的tidyverse包
  2. 用uncount()根据Dead(n)的数值重复对应行数
  3. 生成全局递增的Sample序号,同时设置固定的死亡状态Status=1
  4. 调整列顺序为你需要的结构

完整代码示例

library(tidyverse)

# 模拟你的原始数据
original_df <- tibble(
  Day = c(1, 2),
  Sex = c("Male", "Male"),
  `Dead(n)` = c(1, 2)
)

# 执行转换
long_df <- original_df %>%
  uncount(`Dead(n)`) %>%
  mutate(
    Status = 1,
    Sample = row_number()
  ) %>%
  select(Day, Sample, Sex, Status)

# 查看转换结果
print(long_df)

运行后得到的结果完全匹配你的需求:

DaySampleSexStatus
11Male1
22Male1
23Male1

关键说明

  • uncount(col)是核心函数,它会将每行重复col列指定的次数,刚好满足把死亡数量拆分为单独样本行的需求
  • 如果需要按Day分组生成样本序号(比如每天从1开始计数),可以把row_number()改成row_number(), .by = Day(需要dplyr 1.1.0及以上版本支持.by参数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:39:59