1

R でグリッドを拡張して、1 つの変数の一意の値に対して拡張が発生するが、2 つの変数の値を結合するようにしたいと考えています。例えば:

frame <- data.frame(id = seq(1:2),id2 = seq(1:2), year = c(2005, 2008))

毎年フレームを拡張したいと思いますが、id と id2 が一緒に考慮されるように (たとえば、(1,1) と (2,2) のような出力を生成するために):

  id id2 year
   1  1   2005
   1  1   2006
   1  1   2007
   1  1   2005
   2  2   2006
   2  2   2007
   2  2   2008

expand.grid() を使用して、誰かがこれを行う方法を知っていますか? 次のコードが与えられた場合、各 ID を一意に見て、すべての組み合わせでフレームを生成することで、コードをまとめることができませんでした。

 with(frame, expand.grid(year = seq(min(year), max(year)), id = unique(id), id2 = unique(id2)))

助けてくれてありがとう。

4

2 に答える 2

1

ここに別の使用方法がありますbase R

 indx <- diff(frame$year)+1
 indx1 <- rep(1:nrow(frame), each=indx)
 frame1 <- transform(frame[indx1,1:2], year=seq(frame$year[1], length.out=indx, by=1))
 row.names(frame1) <- NULL
  frame1
  #  id id2 year
  #1  1   1 2005
  #2  1   1 2006
  #3  1   1 2007
  #4  1   1 2008
  #5  2   2 2005
  #6  2   2 2006
  #7  2   2 2007
  #8  2   2 2008
于 2014-10-09T17:56:22.137 に答える