2016-08-27 6 views
-2

일부 데이터를 서브 세트하려하지만이 부분에 재고가 있습니다. 내 데이터는 다음과 같습니다 : 나는 다른 다른 컬럼에서 동일한 값뿐만 아니라 동일한 값을 갖는 행을 나에게 돌려 줄 것입니다 코드를 찾고 있어요다른 열에서 동일한 값을 가진 행 쌍을 찾습니다.

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"와 "빌려"내 원하는 출력과 "seq_nb"와 "orig_seq_nb"일치의 값에 동일 나에게 제공해야합니다.

감사합니다.

답변

0

우리는 3, 4 열, 행을 반복, order와 데이터 집합을 부분 집합 제 1 요소, 첫 번째 두 열 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 
+0

덕분에 작은 데이터 세트에서 효과적이었습니다. 이 코드를 더 큰 데이터 세트에 적용하려면 cbind 명령을 다른 열로 확장하는 방법이 있습니까? 그리고 cbind 및 apply 명령의 열이 서로 옆에 있지 않으면 어떻게 진행합니까? – fabiusw

+0

@fabiusw''주문하고자하는 열의 색인을 만드십시오. 예를 들어, '1, 5, 13, 15'등을 주문하려면 nm1 <- c (1, 5, 13, 15); nm2 <- setdiff (seq (ncol (df1)), nm1); d2 <- cbind (df1 [nm2], df1 [nm1], 1, function (x) x [order (x)] [1]))'를 적용하고'duplicated '단계를 수행하십시오. 원래 데이터 세트에서 첫 번째 요소를 가져와야하는지 여부는 확실하지 않습니다. 즉'x [order (x)] [1]' – akrun

관련 문제