R中的数据处理:个人在每个时期内花费的时间是多少?

时间:2013-08-06 08:28:42

标签: r data-manipulation

R中,我有三个时间点

  

时间< - c(7,1,4)

并假设时间段被划分为三个区间:(0,3),(3,5),(5,8)

breaks <- c(3, 5, 8)

timeSpent每个观察点有一行,每个时段有一列。它给出了每个时期每个观察所花费的时间:

 timeSpent <- outer(X=time, Y=breaks, FUN=pmin)
 timeSpent <- cbind(timeSpent[, 1], 
                    sapply(X=1:(length(breaks) - 1), FUN=function(ii)
                      timeSpent[, ii + 1] - timeSpent[, ii]))

 > timeSpent
     [,1] [,2] [,3]
[1,]    3    2    2
[2,]    1    0    0
[3,]    3    1    0

例如,观察1在间隔1中花费3天,在间隔2中花费2天,在间隔3中花费2天。对于观察2,它在间隔1中仅花费1天,而在剩余间隔中没有花费。< / p>


您是否有更优雅的方式来获取timeSpent

1 个答案:

答案 0 :(得分:2)

这有帮助吗?

我们cbindtimeSpent矩阵的一列零,因此我们可以获得在第一个观察窗口中花费的初始时间,以及apply diff个功能行...

res <- t( apply( cbind( 0 , timeSpent ) , 1 , diff ) )
     [,1] [,2] [,3]
[1,]    3    2    2
[2,]    1    0    0
[3,]    3    1    0