「グループ別合計」には既に多くの質問がありますが、私は自分の問題を解決できません。ここでは、次のとおりです。パネルデータ - グループ別に集計し、新しい変数を作成する
> df2 = data.table(Year = c(2009,2009,2009,2009,2009,2009,2009,2009,2010,2010,2010,2010),
ID = c(1621, 1621, 1628,1628,3101, 3101,3105,3105,1621, 1621, 1628,1628),
category= c("0910","0910","0911","0913", "0914", "0910","0910","0911","1014","1012","1011","1013"),
var1 = c(60,70, 400,300,15,20, 200,150,61,71,401,301),
var2= c(130,130,700,700,35,35,350,350,132,132,702,702))
だから私はでグループ化されたvar1
の合計を計算したいと思います:
DF1は私の単純化されたデータは
> df1 = data.table(Year = c(2009,2009,2009,2009,2009,2009,2009,2009,2010,2010,2010,2010),
ID = c(1621, 1621, 1628,1628,3101, 3101,3105,3105,1621, 1621, 1628,1628),
category= c("0910","0910","0911","0913", "0914", "0910","0910","0911","1014","1012","1011","1013"),
var1 = c(60,70, 400,300,15,20, 200,150,61,71,401,301))
DF2は(VAR2を参照)が所望の結果である設定ですID
と最初の2つの整数category
したがって、変数カテゴリの最初の2つの整数が09(または10 d soなど)、グループID
とcategory
の最初の2つの整数による合計をvar2
に割り当てます。同じカテゴリーの同じIDに同じ合計を割り当てる必要があります。
私は
> df1$var2 = rep(NA, rep(length(df1$ID)))
df1$var2 = ifelse(substr(df1$category,1,2)=="09", by(df1[Year==2009,]$var1, df1[Year==2009,]$ID,sum), df1$var2)
df1$Var2 = ifelse(substr(df1$category,1,2)=="10", by(df1[Year==2010,]$var1, df1[Year==2010,]$ID,sum), df1$var1)
によってこれをachievしようとしましたが、ここで和が正しい項目に割り当てられていません。
誰かが私を助けてくれますか?
しばらく時間をかけてコードをフォーマットしてください。 – lmo
あなたはコードとCtrl + Kを強調表示することでこれを行うことができます – useR