중복된 행의 인덱스 찾기
R에서 중복된 기능은 중복된 행 검색을 수행합니다.만약 우리가 중복을 제거하려면, 우리는 단지 글을 쓰면 됩니다.df[!duplicated(df),]
데이터 프레임에서 중복이 제거됩니다.
하지만 복제된 데이터의 인덱스를 어떻게 찾을 수 있을까요? 만약에duplicated
일부 행에서 TRUE를 반환하며, 이는 데이터 프레임에서 이러한 행이 두 번째로 발생하는 것이며 해당 인덱스를 쉽게 얻을 수 있음을 의미합니다.이 행의 첫 번째 발생 지수를 구하는 방법은?아니면, 다시 말해 중복된 행이 동일한 인덱스?
저는 data.frame에 대해 루프를 만들 수는 있겠지만, 이 질문에 대해 더 우아한 답이 있다고 생각합니다.
예는 다음과 같습니다.
df <- data.frame(a = c(1,2,3,4,1,5,6,4,2,1))
duplicated(df) | duplicated(df, fromLast = TRUE)
#[1] TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE
어떻게 돼가요?
함수를duplicated(df)
원래 데이터에서 중복되는 요소를 결정합니다. 그fromLast = TRUE
는 "해석은 반대쪽에서 고려해야 한다"는 것을 나타냅니다.두 개의 결과 논리 벡터는 다음을 사용하여 결합됩니다.|
한 때부터TRUE
그들 중 적어도 하나는 중복된 값을 나타냅니다.
키가 있는 data.table을 사용하는 경우 다음과 같은 우아한 구문을 사용할 수 있습니다.
library(data.table)
DT <- data.table(A = rep(1:3, each=4),
B = rep(1:4, each=3),
C = rep(1:2, 6), key = "A,B,C")
DT[unique(DT[duplicated(DT)]),which=T]
짐 풀기
DT[duplicated(DT)]
중복되는 행을 부분 집합화합니다.unique(...)
중복된 행의 고유한 조합만 반환합니다.중복(중복)이 1개 이상인 경우를 다룹니다.DT[..., which = T]
중복 행을 원본과 병합합니다.which=T
행 번호 반환(없음)which = T
데이터를 반환할 뿐입니다.).
사용할 수도 있습니다.
DT[,count := .N,by = list(A,B,C)][count>1, which=T]
언급URL : https://stackoverflow.com/questions/12495345/find-indices-of-duplicated-rows
'programing' 카테고리의 다른 글
Excel 피벗 테이블에서 "Grand Total" 열로 정렬하시겠습니까? (0) | 2023.09.16 |
---|---|
Submodule로 Subversion 저장소를 가질 수 있습니까? (0) | 2023.09.11 |
요소를 사용하여 Python에서 XML 구문 분석트리 예제 (0) | 2023.09.11 |
데이터베이스에서 드롭다운 목록을 채우는 올바른 방법은 무엇입니까? (0) | 2023.09.11 |
워드프레스 쇼트코드가 작동하지 않음 (0) | 2023.09.11 |