R 基于事件的过滤数据集

R 基于事件的过滤数据集,r,R,我有一些大型数据集(超过500000行),我想在R中对其进行过滤。我只想保留最相关的信息,因此我认为保存元素出现次数大于某个值的行是一个好主意。例如,我有以下数据: A B 2 5 4 7 2 8 3 7 2 9 4 2 1 0 我想保留其行元素的引用大于1的行。在这种情况下,输出将为: A B 2 5 4 7 2 8 2 9 4 2

我有一些大型数据集(超过500000行),我想在R中对其进行过滤。我只想保留最相关的信息,因此我认为保存元素出现次数大于某个值的行是一个好主意。例如,我有以下数据:

A     B
2     5
4     7
2     8
3     7
2     9
4     2
1     0
我想保留其行元素的引用大于1的行。在这种情况下,输出将为:

    A     B
    2     5
    4     7
    2     8
    2     9
    4     2

我知道如何使用for循环和rbind,但由于我使用的数据集非常大,因此性能受到了极大的阻碍。有什么建议吗?

我们可以使用
data.table
dplyr
base R
方法来实现这一点。通过使用
data.table
,我们将'data.frame'转换为'data.table'(
setDT(df1)
),按'A'分组,
如果nrow大于1,我们得到data.table的子集(
.SD

或者我们使用
dplyr
。我们按“A”分组,
filter
nrows大于1的组(
n()>1

或者使用
base R
中的
ave
,我们得到一个逻辑索引,并使用该索引对数据集进行子集划分

 df1[with(df1, ave(seq_along(A), A, FUN=length))> 1,]
或者不使用任何分组,我们可以使用
duplicated
来获取索引和子集

df1[duplicated(df1$A)|duplicated(df1$A, fromLast=TRUE),]
 df1[with(df1, ave(seq_along(A), A, FUN=length))> 1,]
df1[duplicated(df1$A)|duplicated(df1$A, fromLast=TRUE),]