【发布时间】:2015-07-08 11:20:55
【问题描述】:
我有一个关于向量“拆分”的问题,尽管不同的方法可能是可行的。我有一个 data.frame(df) 看起来像这样(简化版):
case time
1 1 5
2 2 3
3 3 4
“时间”变量计算时间单位(天、周等),直到事件发生。我想通过增加行数来扩展数据集,并将“时间”“拆分”为长度为 1 的间隔,从 2 开始。结果可能如下所示:
case time begin end
1 1 5 2 3
2 1 5 3 4
3 1 5 4 5
4 2 3 2 3
5 3 4 2 3
6 3 4 3 4
显然,我的数据集比这个例子要大一些。实现这一结果的可行方法是什么?
我有一个开始的想法
df.exp <- df[rep(row.names(df), df$time - 2), 1:2]
为了扩大每个案例的行数,根据时间间隔的数量。基于此,可以按以下方式添加“开始”和“结束”列:
df.exp$begin <- 2:(df.exp$time-1)
但是,我没有成功创建相应的列,因为该命令仅使用第一行来计算 (df.exp$time-1),并且不会自动按“大小写”进行区分。
任何想法都将不胜感激!
【问题讨论】:
-
我不明白第 5 行的结果。
-
第 5 行的结果来自观察到给出了一个新案例。每个新案例都以间隔 begin=2, end=3 开始。之后,会出现更多长度为 1 的区间,具体取决于“时间”变量。