首页 > 解决方案 > 如何选择分组数据的第一个值并在 R 中进行比较?

问题描述

我想比较分组(按 ID 分组)数据集中 x1 和 x2 的第一个值。如果 x1 的第一个分组值大于 x2 的第一个分组值,我将 ID 分配为 1,否则为 0。让我在一个示例中向您展示。您可以在下面看到我的输入变量

dt<-data.frame(ID=c(100, 100, 101, 101, 101), x1=c(1200, 1600, 1350, 1400, 1500), 
                        x2=c(1100, 1410, 1900, 1300, 1100))

由于 1200 > 1100,我将 1 分配给 ID 100,由于 1350 < 1900,我将 0 分配给 ID 101。最后,我的输出将是

res<-data.frame(ID=c(100, 101), res=c(1,0))

我怎样才能做到这一点?

谢谢

标签: rdplyr

解决方案


您也可以使用以下解决方案。我希望我得到你的想法是正确的:

library(dplyr)

dt %>%
  group_by(ID) %>%
  summarise(res = ifelse(first(x1) > first(x2), 1, 0))

# A tibble: 2 x 2
     ID   res
  <dbl> <dbl>
1   100     1
2   101     0

推荐阅读