比较R中各组的最大值和最小值

时间:2016-11-18 19:19:33

标签: r dplyr

我有一个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

1 个答案:

答案 0 :(得分:1)

您可以将列子集化为组内的向量,如下所示:

library(dplyr)

data %>%
  group_by(caseID) %>%
  mutate(newVar = max[groupID == 1] > min[groupID == 2])