如何根据 R 中另一列中的最高数字计算新列?

How to calculate a new column based on highest number in another column in R?

我有一个问题如何更好地解决问题。

我想根据另一列分组后另一列的最高编号定义一个新列。我确实找到了解决方案,请参见下文,但我认为有更好的方法可以做到这一点。

我希望每个 SN 的总测试编号是该特定 SN 的最高测试编号。

感谢您的帮助和建议!

sets <- data.frame(SN=c(1234, 1234, 2345, 3456, 7890, 7890, 7890, 1234, 1234, 2345, 3456, 7890, 7890, 7890), a= c(1,2, 3, 4, 1,2, 1,2,1,2,3,4,5,6) ,testno=
                     c(1,1,2,2,1,1,1,1,1,1,2,2,3,3))
sets

sets <- sets %>% group_by(SN) %>% 
  arrange(desc(testno), .by_group = TRUE)

setshighestno <- sets %>%  distinct(SN, .keep_all = TRUE)
setshighestno$totaltestno <- setshighestno$testno 
setshighestno$testno <- NULL 
setshighestno$a <- NULL 
setshighestno

newsets <- merge(x = sets, y=setshighestno, by = "SN")
newsets

我们可以使用

library(dplyr)
newsets %>%
    group_by(SN) %>% 
    mutate(totaltestno2 = max(testno))