0

次のデータがあります。

 df <- data.frame(Start = c(1,11,26), End = c(10,25,30), Mean = c(0.04349, 0.12, 0.04)) 

 #df
 #  start End    Mean
 #1     1  10 0.04349
 #2    11  25 0.12000
 #3    26  30 0.04000

これから、ベクトルを作成したいと思います。そのエントリは でありMean、インデックスは および によって決定されstartますend

つまり、ベクトルは0.04349インデックス 1 からインデックス 10 までのエントリを持ち、ベクトル エントリの値は0.12インデックス 11 から 25 などになります。これは予想される結果です。

 > res = c(rep(0.04349, df$End[1] - df$Start[1] + 1), rep(0.12, df$End[2] - df$Start[2] + 1), rep(0.04, df$End[3] - df$Start[3] + 1))


 > res
  [1] 0.04349 0.04349 0.04349 0.04349 0.04349 0.04349 0.04349 0.04349 0.04349 0.04349 0.12000 0.12000 0.12000 0.12000 0.12000 0.12000 0.12000 0.12000
 [19] 0.12000 0.12000 0.12000 0.12000 0.12000 0.12000 0.12000 0.04000 0.04000 0.04000 0.04000 0.04000

しかし、上記の取得方法は、特に多数の行の場合、非常に非効率的です。

for ループなしでこのベクトルを構築する簡単な方法はありますか? 実際には、データフレームには多数の行があります。

ありがとう!

4

2 に答える 2

0
library(data.table)
df <- data.table(df)
df[,list(someindex = start:End), by = Mean]
于 2013-10-25T13:10:22.790 に答える