【发布时间】:2020-03-31 09:15:17
【问题描述】:
我有一个数据框来记录个人是否每年服用某种药物:
df_og <- data.frame(
id=c(1,1,1,2,2,2,3,3,3,3),
year=c(2001,2002,2003,2001,2002,2003,2000,2001,2002,2003),
med1=c(1,1,1,1,1,0,0,0,0,1),
med2=c(0,0,0,0,0,1,0,0,1,0),
med3=c(0,0,0,0,0,0,1,1,0,0)
)
看起来像这样:
id year med1 med2 med3
1 2001 1 0 0
1 2002 1 0 0
1 2003 1 0 0
2 2001 1 0 0
2 2002 1 0 0
2 2003 0 1 0
3 2000 0 0 1
3 2001 0 0 1
3 2002 0 1 0
3 2003 1 0 0
所以id 列显示受试者的 id,year 观察年份,med1-2-3 变量是虚拟变量,如果已服用药物,则值为 =1,否则为 =0。
我正在尝试创建一个新的数据框:
id = c(1,2,2,3,3,3),
time = c(3,2,1,2,1,1),
failure = c(0,1,0,1,1,0),
group = c(1,1,2,3,2,1))
看起来像:
id time failure med_group
1 3 0 1
2 2 1 1
2 1 0 2
3 2 1 3
3 1 1 2
3 1 0 1
其中:id 显示受试者 ID,time 计算受试者连续服用某种药物的年数,failure 如果受试者在给定年份更换药物,med_group 受试者的药物一直服用。
例子:
- 第一行
df,主题id=1已经连续3年占用med1,所以time=3还没有切换到其他,所以failure=0。 - 第二排
df、id=2已经连续2年占用med1,所以time=2、failure=0、med_group=1。但后来切换到med2,所以time=1、failure=1和med_group=2。
以此类推。这是一个棘手的操作,所以我希望问题足够清楚。
欢迎提出任何建议!干杯
【问题讨论】:
标签: r dataframe binary survival-analysis