IDのスコア値をNew.Scoreに一致させたいデータフレームがあります。グループごとの他の列に基づく列の値の一致
ID 123
のスコアはグループ1では5
ですが、グループ2ではスコア1
です。そして、私は各グループ内に表示されるスコアを使用したいだけです。
これは私のDFである:
Group ID Score New.ID New.Score
1 123 5 456
1 456 1 789
1 789 0 123
2 555 1 999
2 123 1 123
2 999 0 555
そして、私の所望の出力:
Group ID Score New.ID New.Score
1 123 5 456 1
1 456 1 789 0
1 789 0 123 5
2 555 1 999 0
2 123 1 123 1
2 999 0 555 1
私はave
で試してみました:
mtch <- function(x) {
dt[match(x,dt$ID),"Score"]
}
dt$New.Score <- ave(dt$New.ID, dt$Group, FUN = mtch)
しかし、それはNA値を私に与えます。 DF作成のための
コード:
Group <- as.factor(c(1, 1, 1, 2, 2, 2))
ID <- as.factor(c(123,456,789, 555, 123, 999))
Score <- c(5,1,0, 1,1,0)
dt <- data.frame(Group, ID, Score, New.ID)
' New.ID'列はとても 'DT <が不足しています。 –