"작은 첨자가있는 요소"를 포함하여 모든 중복 행 찾기
R 's duplicated
는 벡터 또는 데이터 프레임의 각 요소가 더 작은 첨자를 가진 요소의 복제본인지 여부를 나타내는 벡터를 반환합니다. 따라서 5 행 데이터 프레임의 3, 4, 5 행이 동일 duplicated
하면 벡터를 얻을 수 있습니다.
FALSE, FALSE, FALSE, TRUE, TRUE
하지만이 경우에는 실제로
FALSE, FALSE, TRUE, TRUE, TRUE
즉, 행이 더 큰 첨자를 가진 행에 의해 중복되는지 여부를 알고 싶습니다 .
duplicated
이 fromLast
인수를. 의 "예제"섹션은 ?duplicated
사용 방법을 보여줍니다. 그냥 전화 duplicated
한 번, 두 번 fromLast=FALSE
에 한 번 fromLast=TRUE
와 중 하나 인 행을 TRUE
.
일부 후기 편집 : 재현 가능한 예제를 제공하지 않았으므로 @jbaums가 친절하게 기고 한 그림이 있습니다.
vec <- c("a", "b", "c","c","c")
vec[duplicated(vec) | duplicated(vec, fromLast=TRUE)]
## [1] "c" "c" "c"
duplicated
값 집합을 조합하고을 적용한 unique
다음을 사용하여 테스트해야 %in%
합니다. 항상 그렇듯이 샘플 문제로 인해이 프로세스가 활성화됩니다.
> vec <- c("a", "b", "c","c","c")
> vec[ duplicated(vec)]
[1] "c" "c"
> unique(vec[ duplicated(vec)])
[1] "c"
> vec %in% unique(vec[ duplicated(vec)])
[1] FALSE FALSE TRUE TRUE TRUE
저도 같은 질문을 했는데 제가 틀리지 않았다면 이것도 답입니다.
vec[col %in% vec[duplicated(vec$col),]$col]
어느 쪽이 더 빠른지 Dunno, 현재 사용중인 데이터 세트는 상당한 시간 차이를 생성하는 테스트를 수행 할만큼 충분히 크지 않습니다.
데이터 프레임의 중복 행은 다음 dplyr
을 수행 하여 얻을 수 있습니다.
df = bind_rows(iris, head(iris, 20)) # build some test data
df %>% group_by_all() %>% filter(n()>1) %>% ungroup()
특정 열을 제외 group_by_at(vars(-var1, -var2))
하는 대신 데이터를 그룹화하는 데 사용할 수 있습니다.
데이터뿐 아니라 행 인덱스가 실제로 필요한 경우 다음과 같이 먼저 추가 할 수 있습니다.
df %>% add_rownames %>% group_by_at(vars(-rowname)) %>% filter(n()>1) %>% pull(rowname)
특정 열에 대해 중복되는 행에 관심이있는 경우 plyr 접근 방식을 사용할 수 있습니다 .
ddply(df, .(col1, col2), function(df) if(nrow(df) > 1) df else c())
dplyr 로 카운트 변수 추가 :
df %>% add_count(col1, col2) %>% filter(n > 1) # data frame
df %>% add_count(col1, col2) %>% select(n) > 1 # logical vector
중복 행의 경우 (모든 열 고려) :
df %>% group_by_all %>% add_tally %>% ungroup %>% filter(n > 1)
df %>% group_by_all %>% add_tally %>% ungroup %>% select(n) > 1
이러한 접근 방식의 이점은 컷오프로 중복 항목 수를 지정할 수 있다는 것입니다.
'Programing' 카테고리의 다른 글
파이썬에서 파일이 바이너리 (비 텍스트)인지 어떻게 감지 할 수 있습니까? (0) | 2020.08.25 |
---|---|
CSS 속성 : 표시 vs. 가시성 (0) | 2020.08.25 |
인스펙터 (웹킷, 방화범 등)에서 CSS 변경 사항 내보내기 (0) | 2020.08.25 |
LINQ Ring : 대규모 컬렉션에 대한 Any () 대 Contains () (0) | 2020.08.25 |
perror ( "…") 및 fprintf (stderr, "…")는 언제 사용해야합니까? (0) | 2020.08.25 |