R의 열별로 중복 행 제거

Jinku Hu 2023년1월30일
  1. dplyr패키지의distinct기능을 사용하여 R에서 열별로 중복 행 제거
  2. group_by,filterduplicated함수를 사용하여 R에서 열별로 중복 행 제거
  3. group_byslice함수를 사용하여 R에서 열별로 중복 행 제거
R의 열별로 중복 행 제거

이 기사에서는 R에서 열별로 중복 행을 제거하는 방법을 소개합니다.

dplyr패키지의distinct기능을 사용하여 R에서 열별로 중복 행 제거

dplyr패키지는 R 언어에서 사용되는 가장 일반적인 데이터 조작 라이브러리 중 하나 인distinct기능을 제공합니다. distinct는 주어진 데이터 프레임에서 고유 한 행을 선택합니다. 데이터 프레임을 첫 번째 인수로 사용하고 선택 중에 고려해야하는 변수를 사용합니다. 고유 한 행을 필터링하기 위해 여러 열 변수를 제공 할 수 있지만 다음 코드 스 니펫에서는 단일 변수 예제를 보여줍니다. 세 번째 인수는 선택 사항이며 기본값 인FALSE를 갖지만 사용자가 명시 적으로TRUE를 전달하면 함수는 필터링 후 데이터 프레임의 모든 변수를 유지합니다. dplyr%>%형식의 파이프라는 연산자 함수를 사용합니다. 이는 오른쪽 함수의 첫 번째 인수로 왼쪽 변수를 제공하는 것으로 해석됩니다. 즉,x %?% f(y)표기법은f(x, y)가됩니다.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% distinct(id, .keep_all = TRUE)
t2 <- df1 %>% distinct(gender, .keep_all = TRUE)
t3 <- df1 %>% distinct(variant, .keep_all = TRUE)

df2 <- mtcars

tmp1 <- df2 %>% distinct(cyl, .keep_all = TRUE)
tmp2 <- df2 %>% distinct(mpg, .keep_all = TRUE)

group_by,filterduplicated함수를 사용하여 R에서 열별로 중복 행 제거

열 값으로 중복 행을 제거하는 또 다른 솔루션은 열 변수로 데이터 프레임을 그룹화 한 다음filterduplicated함수를 사용하여 요소를 필터링하는 것입니다. 첫 번째 단계는dplyr패키지의 일부인group_by함수로 수행됩니다. 다음으로 이전 작업의 출력이filter기능으로 리디렉션되어 중복 행을 제거합니다.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% filter (! duplicated(id))
t2 <- df1 %>% group_by(gender) %>% filter (! duplicated(gender))
t3 <- df1 %>% group_by(variant) %>% filter (! duplicated(variant))

df2 <- mtcars

tmp3 <- df2 %>% group_by(cyl) %>% filter (! duplicated(cyl))
tmp4 <- df2 %>% group_by(mpg) %>% filter (! duplicated(mpg))

group_byslice함수를 사용하여 R에서 열별로 중복 행 제거

또는slice와 함께group_by기능을 사용하여 열 값별로 중복 행을 제거 할 수 있습니다. slicedplyr패키지의 일부이며 색인별로 행을 선택합니다. 흥미롭게도 데이터 프레임이 그룹화 될 때slice는 다음 샘플 코드에 설명 된 것처럼 각 그룹의 지정된 인덱스에있는 행을 선택합니다.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% slice(1)
t2 <- df1 %>% group_by(gender) %>% slice(1)
t3 <- df1 %>% group_by(variant) %>% slice(1)

df2 <- mtcars

tmp5 <- df2 %>% group_by(cyl) %>% slice(1)
tmp6 <- df2 %>% group_by(mpg) %>% slice(1)
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - R Data Frame