在dplyr中选择不同的行

时间:2018-06-14 15:40:04

标签: r dplyr distinct-values

dat <- data.frame(loc.id = rep(1:2, each = 3), 
              year = rep(1981:1983, times = 2), 
              prod = c(200,300,400,150,450,350),
              yld = c(1200,1250,1200,3000,3200,3200))

如果我想为每个loc.id选择yld的不同值,我会这样做:

dat %>% group_by(loc.id) %>% distinct(yld)  

    loc.id     yld
    <int>     <dbl>
      1      1200
      1      1250
      2      3000
      2      3200

但是,我想要做的是loc.id,如果年份相同yld,则选择较低的yld prod值。 loc.id year prod yld 1 1981 200 1200 1 1982 300 1250 2 1981 150 3000 2 1983 350 3200 我的数据框应该看起来像是我希望prod和year列也包含在最终数据框中

A

1 个答案:

答案 0 :(得分:4)

我们可以通过'prod'进行arrange然后slice进行第一次观察

dat %>% 
    arrange(loc.id, prod) %>% 
    group_by(loc.id, yld) %>%
    slice(1)
# A tibble: 4 x 4
# Groups:   loc.id, yld [4]
#  loc.id  year  prod   yld
#   <int> <int> <dbl> <dbl>
#1      1  1981   200  1200
#2      1  1982   300  1250
#3      2  1981   150  3000
#4      2  1983   350  3200