【发布时间】:2021-06-18 01:36:21
【问题描述】:
给定以下数据框data:
set.seed(123)
data <- data.frame(ID = c(1,1,1,2,2,2),
Loc = rep(paste("Loc", seq(1:3), sep = "")),
Var = rnorm(6))
我们可以使用dplyr::group_by 和dplyr::mutate 创建一个新列,显示每个Var 的最大值ID:
library(dplyr)
data%>%
group_by(ID)%>%
mutate(MaxVar = max(Var))
如果我们想要创建另一个新列(我们将其称为MaxVarLoc)以显示与每个MaxVar 相关联的Loc ID?
结果如下所示:
ID Loc Var MaxVar MaxVarLoc
1 Loc1 -0.56047565 1.558708 LOC3
1 Loc2 -0.23017749 1.558708 LOC3
1 Loc3 1.55870831 1.558708 LOC3
2 Loc1 0.07050839 1.715065 LOC3
2 Loc2 0.12928774 1.715065 LOC3
2 Loc3 1.71506499 1.715065 LOC3
#The result just happens to be `Loc3` in both cases here
我们如何在dplyr 框架中以这种方式访问关系数据(即,为每个ID 指定哪个Loc 与Var 的最大值对应)?
【问题讨论】: