欠測値のある不均衡な四半期パネルデータセットがあります。次の四半期A2
から変数を差し引きたいです。A1
A2の差を取得したくないが、互いに異なる変数を減算することに注意してください。差異は、uidごとに個別に計算する必要があります。1999年第4四半期や2000年第1四半期のように年を変更することに加えて、その後に続くことを意図しています。
zooのようなパッケージは1つのインデックスしか受け取らないため、ここで時間インデックスを連結する必要があるかどうかは本当にわかりません。しかし、それはここでは問題ではありません。次にいくつかのデータ例を示します。
structure(list(uid = c(1, 1, 1, 2, 2, 3, 3, 3), tndx = c(1999.4,
2000.1, 2000.2, 1999.4, 2000.1, 2000.1, 2000.2, 2000.3), A1 = c(2,
2, 2, 10, 11, 1, 1, 1), A2 = c(3, 3, 3, 14, 14, 2, 100, 2)), .Names = c("uid",
"tndx", "A1", "A2"), row.names = c(NA, -8L), class = "data.frame")
# which results in
uid tndx A1 A2
1 1 1999.4 2 3
2 1 2000.1 2 3
3 1 2000.2 2 3
4 2 1999.4 10 14
5 2 2000.1 11 14
6 3 2000.1 1 2
7 3 2000.2 1 100
8 3 2000.3 1 2
個別のインデックスが必要な場合は、次の例を使用してください。
# Thx Andrie!
x2 <- data.frame(x, colsplit(x$tndx, "\\.", names=c("year", "qtr")))
これをベースで解決する良い方法はありますかreshape2
、 plyr
それともカスタム関数を作成しますか?
一部が1回だけ発生する可能性もあることに注意してくださいuid
。明らかに、その場合、遅延差を計算することはできません。それでも、それを確認してNAを作成する必要があります。