0

だから私は学生がクラスにいた年と彼らがいた年の何四半期のデータセットを持っているので、2002年は4回で、以下のように四半期1、2、3、4があります:

matrix(c(1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2002,2002,2002,2002,2003,2003,2003,2002,2002,2002,2002,2003,2003,2003,2003,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3),ncol=3,dimnames=list(c(NULL),c("ids","year","quarter")))

これは私にこれを与えます

      ids year quarter
 [1,]   1 2002       1
 [2,]   1 2002       2
 [3,]   1 2002       3
 [4,]   1 2002       4
 [5,]   1 2003       1
 [6,]   1 2003       2
 [7,]   1 2003       3
 [8,]   2 2002       4
 [9,]   2 2002       1
[10,]   2 2002       2
[11,]   2 2002       3
[12,]   2 2003       4
[13,]   2 2003       1
[14,]   2 2003       2
[15,]   2 2003       3

四半期の数を累積する新しい変数を作成するシーケンスを生成したいのですが、必要に応じて年と四半期をマージするのは難しくありませんが、次のようなシーケンスを行うように指示するにはどうすればよいですか

structure(c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2002, 
2002, 2002, 2002, 2003, 2003, 2003, 2002, 2002, 2002, 2002, 2003, 
2003, 2003, 2003, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 
1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8), .Dim = c(15L, 4L
), .Dimnames = list(NULL, c("ids", "year", "quarter", "sequence quarters"
)))

私にこれをくれ

      ids year quarter sequence quarters
 [1,]   1 2002       1                 1
 [2,]   1 2002       2                 2
 [3,]   1 2002       3                 3
 [4,]   1 2002       4                 4
 [5,]   1 2003       1                 5
 [6,]   1 2003       2                 6
 [7,]   1 2003       3                 7
 [8,]   2 2002       4                 1
 [9,]   2 2002       1                 2
[10,]   2 2002       2                 3
[11,]   2 2002       3                 4
[12,]   2 2003       4                 5
[13,]   2 2003       1                 6
[14,]   2 2003       2                 7
[15,]   2 2003       3                 8

私はrepコマンドとシーケンスなどを試しましたが、各参加者の後に番号付けを再開するように指示する方法がわかりません. クォーターの数は学生によって異なり、どのクォーターで開始するかを知る必要はありません。これは大学のデータなので、クォーター 2 から開始できると思います (すべての開始値に関するデータ セット全体を調べていません)。参加者は 6,000 人程度) でも、累積する必要があるだけです。この質問が適切であることを願っています。質問を正しくフォーマットしました。

4

1 に答える 1

1

使用aveidsて呼び出すseq

 transform(dat , seqs = ave(dat[,'ids'],dat[,'ids'],FUN=seq))
 ids year quarter seqs
1    1 2002       1    1
2    1 2002       2    2
3    1 2002       3    3
4    1 2002       4    4
5    1 2003       1    5
6    1 2003       2    6
7    1 2003       3    7
8    2 2002       4    1
9    2 2002       1    2
10   2 2002       2    3
11   2 2002       3    4
12   2 2003       4    5
13   2 2003       1    6
14   2 2003       2    7
15   2 2003       3    8
于 2014-02-08T10:39:41.983 に答える