查找在不同列中具有相同值的行对

时间:2016-08-27 13:32:50

标签: r

我正试图对一些数据进行分组,但在这部分得到了库存。我的数据如下:

structure(list(sym_id = structure(c(1L, 2L, 2L, 2L, 2L, 
2L, 3L, 3L, 4L, 5L, 5L), .Label = c("AOL.HH", "ARCH.GA", "ARCH.GK", 
"T.GJ", "T.GK"), class = "factor"), comp = structure(c(1L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L), .Label = c("AOL", "ARCH", 
"T"), class = "factor"), seq_nb = c(18327L, 9952L, 39808L, 
56601L, 44974L, 55302L, 20023L, 24403L, 15529L, 46202L, 57269L
), orig_seq_nb = c(81261L, 72161L, 9952L, 
1276L, 98216L, 16423L, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_)), .Names = c("bond_sym_id", 
"company_symbol", "seq_nb", "orig_seq_nb"), row.names = c(NA, 
-11L), class = c("tbl_df", "tbl", "data.frame")) 

我正在寻找一个代码,它可以让我返回在不同列中具有相同值但在另一列中具有相同值的行。 输出应该给我回来

Row1  ARCH.GA ARCH 9952  72161

Row2  ARCH.GA ARCH 39808 9952

如您所见,“sym_ID”和“comp”列对于我想要的输出是相等的,“seq_nb”和“orig_seq_nb”中的值匹配。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我们使用第3列和第4列对数据集进行子集,遍历行order,获取第一个元素,使用前两列cbind,使用duplicated查找逻辑重复元素的索引,这可用于对'df1'的行进行子集化。

d2 <- cbind(df1[1:2], apply(df1[3:4],1, function(x) x[order(x)][1]))
df1[duplicated(d2)|duplicated(d2, fromLast=TRUE),]
#  bond_sym_id company_symbol seq_nb orig_seq_nb
#      <fctr>         <fctr>  <int>       <int>
#1     ARCH.GA           ARCH   9952       72161
#2     ARCH.GA           ARCH  39808        9952