我有一个data.frame
嵌套组(使用summarize
中的dyplr
生成)。每个案例包含2组。对于这两组中的每一组,我有另一个变量的最大值和最小值。因此,对于每种情况,我有2个最大值和2个最小值。我想要做的是创建一个新的指标变量,该变量在不同组的特定条件下编码为1。这里有一些代码可以生成看起来像我的样本数据:
data <- expand.grid(groupID=1:2, caseID=1:3)
data$max <- rnorm(nrow(data))
data$min <- rnorm(nrow(data))
因此,基本数据如下所示:
> data
groupID caseID max min
1 1 1 -0.17317875 -0.65772183
2 2 1 -0.32221584 1.39254577
3 1 2 0.33535437 -1.55013998
4 2 2 -0.03950875 1.24181830
5 1 3 1.00759879 -1.29394582
6 2 3 0.28469228 -0.03454565
我想要的是一个指标,对每个caseID都是唯一的,通过比较groupID中的值来生成。比如,如果组1的最大值大于组2的最小值:
groupID caseID max min newVar
1 1 1 -0.17317875 -0.65772183 0
2 2 1 -0.32221584 1.39254577 0
3 1 2 0.33535437 -1.55013998 0
4 2 2 -0.03950875 1.24181830 0
5 1 3 1.00759879 -1.29394582 1
6 2 3 0.28469228 -0.03454565 1
答案 0 :(得分:1)
您可以将列子集化为组内的向量,如下所示:
library(dplyr)
data %>%
group_by(caseID) %>%
mutate(newVar = max[groupID == 1] > min[groupID == 2])