在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
?
答案 0 :(得分:2)
这有帮助吗?
我们cbind
为timeSpent
矩阵的一列零,因此我们可以获得在第一个观察窗口中花费的初始时间,以及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