2

パネルデータ、被験者の時間経過による特徴を含むデータフレームを取得しました。科目ごとに 1 から最大年数までのシーケンスを持つ列を作成する必要があります。たとえば、サブジェクト 1 が 2000 年から 2005 年までのデータ フレームにある場合、1、2、3、4、5、6 というシーケンスが必要です。

以下は私のデータのごく一部です。最後の列 ( exp) は、取得しようとしているものです。さらに、最初の件名 ( 13) を見ると、2008 年には qtty の値がゼロであることがわかります。この場合、NAまたはコード ( 01-9999) だけが必要です。どちらでもかまいません。

データの下にあるのは、そのベクトルを取得するために行ったことですが、うまくいきませんでした。

どんな助けでも大歓迎です。

subject season qtty exp
    13  2000    29  1
    13  2001    29  2
    13  2002    29  3
    13  2003    29  4
    13  2004    29  5
    13  2005    27  6
    13  2006    27  7
    13  2007    27  8
    13  2008    0   NA
    28  2000    18  1
    28  2001    18  2
    28  2002    18  3
    28  2003    18  4
    28  2004    18  5
    28  2005    18  6
    28  2006    18  7
    28  2007    18  8
    28  2008    18  9
    28  2009    20  10
    28  2010    20  11
    28  2011    20  12
    28  2012    20  13
    35  2000    21  1
    35  2001    21  2
    35  2002    21  3
    35  2003    21  4
    35  2004    21  5
    35  2005    21  6
    35  2006    21  7
    35  2007    21  8
    35  2008    21  9
    35  2009    14  10
    35  2010    11  11
    35  2011    11  12
    35  2012    10  13

私のコード:

numbY<-aggregate(season ~  subject, data = toCountY,length)
colnames(numbY)<-c("subject","inFish")
toCountY$inFish<-numbY$inFish[match(toCountY$subject,numbY$subject)]
numbYbyFisher<-unique(numbY)
seqY<-aggregate(numbYbyFisher$inFish, by=list(numbYbyFisher$subject), function(x)seq(1,x,1))
4

2 に答える 2

2

私は使用してddplyおり、2つのケースを区別しています:

サブジェットに沿ってシーケンスを生成し、qtty がゼロの場合は NA に置き換えます。

ddply(dat,.(subjet),transform,new.exp=ifelse(qtty==0,NA,seq_along(subjet)))

または、qtty がゼロであるジャンプで、ゼロとは異なる qtty に沿ってシーケンスを生成します。

ddply(dat,.(subjet),transform,new.exp={
  hh <- seq_along(which(qtty !=0))
  if(length(which(qtty ==0))>0) 
    hh <- append(hh,NA,which(qtty==0)-1)
  hh
})
于 2013-11-05T08:55:53.140 に答える
0

編集済み

ind=qtty!=0

exp=numeric(length(subject))
temp=0

for(i in 1:length(unique(subject[ind]))){
temp[i]=list(seq(from=1,to=table(subject[ind])[i]))
}

exp[ind]=unlist(temp)

これはあなたが必要とするものを提供します

于 2013-11-05T08:40:18.140 に答える