基于逻辑测试的子集数据集

时间:2019-03-18 22:33:56

标签: r logic subset

我想基于逻辑测试对数据集进行子集化。

我的数据如下:

A  B
1  2
3  4
5  7
2  1

基本上,我想做的是将数据集分为两个子数据集,其中一个将包含所有观察值,对于给定的行,存在反向组合。因此,所需的输出如下所示:

data1
A B
1 2
2 1

第二:

data2
3 4
5 7

我知道subset()函数可以进行逻辑测试,但我只是不知道如何在R中设置这一功能。

1 个答案:

答案 0 :(得分:3)

您可以找到重复的行索引,然后根据该索引来子集:

MySortedData <- data.frame(t(apply(df,1,sort)))
# X1 X2
# 1  1  2
# 2  3  4
# 3  5  7
# 4  1  2

MyDuplicates <- duplicated(MySortedData) | duplicated(MySortedData, fromLast=TRUE)
# [1]  TRUE FALSE FALSE  TRUE

MySubset2 <- df[!MyDuplicates,]
# A B
# 2 3 4
# 3 5 7

MySubset1 <- df[MyDuplicates,]
# A B
# 1 1 2
# 4 2 1