【发布时间】:2017-04-12 00:23:58
【问题描述】:
我有一个数据框,我想将 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 <- data.frame(...)不会运行。