split_L <- Lexis(entry = list("cal" = cal.yr(test), "age2" = cal.yr(test) - cal.yr(birth)), exit = list("cal" = cal.yr(liver_time)), exit.status = cancer_liver, id = ID, data = incident_dat %>% filter(liver_time > test + 90)) %>% splitLexis(breaks = seq(0,85,5), time.scale="age2") %>% splitLexis(breaks = seq(2014,2022,1), time.scale="cal") case_count <- tapply(status(split_L %>% filter(obesity_HCV==1),"exit")==1, list( timeBand(split_L%>% filter(obesity_HCV==1),"age2","left")), sum)
时间: 2024-04-20 11:27:16 浏览: 88
lex_yacc_cal.zip_LEX_Lex YACC cal
这段代码的执行流程可以分为以下几个步骤:
1. 创建 Lexis 对象
首先,使用 `Lexis()` 函数创建一个 Lexis 对象,用于对样本进行划分和计算。其中函数的参数包括:
- `entry`:入组时间,由 `cal.yr(test)` 表示;
- `age2`:年龄,由 `cal.yr(test) - cal.yr(birth)` 表示;
- `exit`:出组时间,由 `cal.yr(liver_time)` 表示;
- `exit.status`:出组状态,由 `cancer_liver` 表示;
- `id`:个体的 ID,由 `ID` 表示;
- `data`:分析数据集,由 `incident_dat %>% filter(liver_time > test + 90)` 表示,即筛选出入组时间后 90 天内发生过肝癌的个体。
2. 对 Lexis 对象进行划分
接下来,使用 `splitLexis()` 函数对 Lexis 对象进行划分。其中,使用 `breaks` 参数设置划分的时间间隔,使用 `time.scale` 参数设置时间的刻度。具体来说,将 Lexis 对象按照年龄和时间划分为多个子对象,分别保存到新的 Lexis 对象中。
3. 计算每个子对象中患病的个体数
最后,使用 `tapply()` 函数计算每个子对象中患病的个体数。具体来说,使用 `filter()` 函数筛选出符合条件的个体,其中 `obesity_HCV==1` 表示个体同时患有肥胖和丙型肝炎。然后使用 `timeBand()` 函数将个体按照年龄和时间划分到相应的子对象中,最后使用 `sum()` 函数计算每个子对象中患病的个体数,并将结果保存到 `case_count` 中。
总体来说,这段代码的主要目的是根据样本数据进行生存分析,并计算患病个体数。其中,使用了多个函数对数据进行处理和计算,包括 `Lexis()`、`splitLexis()` 和 `tapply()` 等函数。
阅读全文