我有一个数据框,我想将ID的Score值与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 < - data.frame(...)'将无法运行。 –