【问题标题】:Selecting distinct rows in dplyr [duplicate]在 dplyr 中选择不同的行
【发布时间】:2018-11-24 10:55:15
【问题描述】:
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 值。我的数据框应该看起来像,即我希望 prod 和 year 列也包含在最终数据框中

    loc.id    year   prod     yld 
      1        1981   200     1200
      1        1982   300     1250
      2        1981   150     3000
      2        1983   350     3200   

【问题讨论】:

  • 谢谢。有错别字

标签: r dplyr distinct-values


【解决方案1】:

我们可以通过 '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

【讨论】:

  • dat %&gt;% group_by(loc.id, yld) %&gt;% slice(which.min(prod)),如在欺骗目标中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多