【问题标题】:How to subset your dataframe to keep first 3 duplicate rows in R?如何对您的数据框进行子集化以在 R 中保留前 3 个重复行?
【发布时间】:2022-01-20 02:36:21
【问题描述】:

我有一张如下表格的表格

我只想根据 V1 和 V@ 的重复值保留前 3 行,如下所示:

df %>% distinct(V1,V2) 只让我保留第一行。

【问题讨论】:

  • 请不要发布数据截图。发布代码以生成您的数据。

标签: r duplicates distinct


【解决方案1】:

你可以试试

library(dplyr)
df %>%
  group_by(V1, V2) %>%
  filter(row_number() <= 3)
     V1    V2    V3
  <dbl> <dbl> <dbl>
1     1     2     4
2     1     2     5
3     1     2     6
4     9     3    10
5     9     3    15
6     9     3    16

【讨论】:

  • 也可以用slice_head(n=3)代替filter
【解决方案2】:

带data.table:

library(data.table)
dt <- data.table(c(rep(1, 4), rep(9, 5)), c(rep(2, 4), rep(3, 5)), c(4:7, 10, 15:18)) 
dt[, .SD[1:3], by = c('V1', 'V2')]
   V1 V2 V3
1:  1  2  4
2:  1  2  5
3:  1  2  6
4:  9  3 10
5:  9  3 15
6:  9  3 16

如果您不想使用 V3 = NA 的行(如果重复项少于 3 个),则可以使用 .SD[1:min(3, .N)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    相关资源
    最近更新 更多