R:随时间增加具有斜率系数的列

时间:2014-03-17 15:38:53

标签: r

我有一个随时间变化的数据框。 colnames以毫秒为单位反映时间。我想添加一个额外的列,其斜率系数最适合每个令牌。

Token 0ms 20ms 40ms 60ms 80ms 1 2.5 3.7 4.8 5.2 6.3 2 3.6 4.9 5.2 6.1 7.8 3 1.1 3.2 4.6 7.8 9.1 4 4.5 3.3 2.1 1.9 NA 5 2.1 3.5 3.7 NA NA

有些行具有NA,因为并非所有令牌在相同的时间内都处于活动状态。

1 个答案:

答案 0 :(得分:1)

d  <- read.table(text=
"Token 0ms 20ms 40ms 60ms 80ms
1     2.5 3.7 4.8 5.2 6.3
2     3.6 4.9 5.2 6.1 7.8
3     1.1 3.2 4.6 7.8 9.1
4     4.5 3.3 2.1 1.9 NA
5     2.1 3.5 3.7 NA NA",
header=TRUE,check.names=FALSE)
slopes <- apply(as.matrix(d[,-1]),1,
         function(y) {
           fit <- lm(y~t,
              data=data.frame(y,
                       t=seq(0,length=length(y),by=20)))
           coef(fit)[2]
         })
data.frame(d,slopes,check.names=FALSE)
##   Token 0ms 20ms 40ms 60ms 80ms  slopes
## 1     1 2.5  3.7  4.8  5.2  6.3  0.0455
## 2     2 3.6  4.9  5.2  6.1  7.8  0.0480
## 3     3 1.1  3.2  4.6  7.8  9.1  0.1030
## 4     4 4.5  3.3  2.1  1.9   NA -0.0450
## 5     5 2.1  3.5  3.7   NA   NA  0.0400