【问题标题】:Removing rows by group and based on values [duplicate]按组并基于值删除行[重复]
【发布时间】:2019-02-26 00:23:55
【问题描述】:

我有一个如下所示的数据集:

data 
ID               Application                 Admission
1                FALSE                       FALSE
2                FALSE                       FALSE
2                TRUE                        FALSE
3                FALSE                       FALSE
3                TRUE                        FALSE
3                TRUE                        TRUE

我想以某种方式按 ID 对行进行分组,然后删除除该 ID 的最后一行之外的所有内容。它看起来像这样:

ID               Application                 Admission
1                FALSE                       FALSE
2                TRUE                        FALSE
3                TRUE                        TRUE

我对编码还很陌生,所以我只是一一进行,并单独删除了行。有一个更好的方法吗?谢谢你。

【问题讨论】:

  • @Amy 答案在 MySQL 中,CarolynGrace 要求提供 R 解决方案
  • 如果你使用data.table包并将其转换为data.table,有unique(data, by="ID", fromLast = TRUE)(看看我能不能找到一个骗子......)
  • @divi & Rich - 这个问题的答案(如 Wen 的)不适用于您链接的第一个和最后一个问题,所以不是一个很好的骗子。不过,我添加的也不是(专门针对 data.table)...
  • data.table 答案的细微变化 - setDT(data) setkey(data,ID) data[J(unique(ID)),mult="last"]

标签: r


【解决方案1】:

从基础 R

df[!duplicated(df$ID,fromLast = T),]
  ID Application Admission
1  1       FALSE     FALSE
3  2        TRUE     FALSE
6  3        TRUE      TRUE

【讨论】:

    【解决方案2】:

    试试:

    library(dplyr)
    df %>% group_by(ID) %>% slice(n())
    # A tibble: 3 x 3
    # Groups:   ID [3]
         ID Application Admission
      <int>       <lgl>     <lgl>
    1     1       FALSE     FALSE
    2     2        TRUE     FALSE
    3     3        TRUE      TRUE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-15
      • 2022-01-24
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      相关资源
      最近更新 更多