gpt4 book ai didi

r - 根据其他列设置列的值

转载 作者:行者123 更新时间:2023-12-01 12:22:09 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

  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 在组 1 中的得分为 5 ,但在组 2 中的得分为 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)

最佳答案

一个简单的match应该做的伎俩。使用您提供的数据:

data <- data.frame(ID, Score, New.ID)
data$New.Score <- data[match(data$New.ID,data$ID),"Score"]

然后检查它是否是我们想要的结果:
identical(dt,data)
#[1] TRUE

关于r - 根据其他列设置列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43333065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com