如何对您的数据框进行子集化以在 R 中保留前 3 个重复行?
Posted
技术标签:
【中文标题】如何对您的数据框进行子集化以在 R 中保留前 3 个重复行?【英文标题】:How to subset your dataframe to keep first 3 duplicate rows in R? 【发布时间】:2022-01-20 02:36:21 【问题描述】:我有一张如下表格的表格
我只想根据 V1 和 V@ 的重复值保留前 3 行,如下所示:
df %>% distinct(V1,V2) 只让我保留第一行。
【问题讨论】:
请不要发布数据截图。发布代码以生成您的数据。 【参考方案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)]
。
【讨论】:
以上是关于如何对您的数据框进行子集化以在 R 中保留前 3 个重复行?的主要内容,如果未能解决你的问题,请参考以下文章
如何对 RandomForest 进行二值化以在 python 中绘制 ROC?