我有一个数据框,长这样:
ID Score New.ID New.Score
123 5 456
456 1 789
789 0 123
我希望给New.ID列相同的分数(这些分数只是按不同顺序排列而已)。
期望结果:
ID Score New.ID New.Score
123 5 456 1
456 1 789 0
789 0 123 5
重新构建数据框的代码:
ID <- as.factor(c(123,456,789))
Score <- c(5,1,0)
New.ID<- as.factor(c(456, 789, 123))
New.Score <- c(1,0,5)
dt <- data.frame(ID, Score, New.ID, New.Score)
更新
期望输出:
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
我试图尝试对每个组使用函数。在第一个组中,ID为123
的分数是5
,但在第二个组中它的分数是1
。我只想使用出现在每个组内的分数。
我尝试使用ave
:
mtch <- function(x) {
dt[match(x,dt$ID),"Score"]
}
dt$New.Score <- ave(dt$New.ID, dt$Group, FUN = mtch)
但是它给了我NA值。
第二个数据框的代码:
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)
ave
做了一些事情,但是得到了 NAs 回来。我已经在我的问题中更新了一个例子。再次感谢! - apples-oranges