반응형
선택한 열만있는 데이터 프레임에서 고유
100 개 이상의 열이있는 데이터 프레임이 있으며 두 열만 비교하여 고유 한 행을 찾으려고합니다. 나는 이것이 쉬운 일이기를 바라고 있지만 unique
나 duplicated
자신 과 함께 일할 수는 없습니다 .
아래에서는 id와 id2 만 사용하여 고유하고 싶습니다.
data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))
id id2 somevalue
1 1 x
1 1 y
3 4 z
다음 중 하나를 얻고 싶습니다.
id id2 somevalue
1 1 x
3 4 z
또는:
id id2 somevalue
1 1 y
3 4 z
(유일한 행 중 어떤 행이 유지되는지 선호하지 않습니다)
좋습니다. 중복되지 않은 열에서 어떤 값을 선택하는지가 중요하지 않다면 매우 쉽습니다.
dat <- data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))
> dat[!duplicated(dat[,c('id','id2')]),]
id id2 somevalue
1 1 1 x
3 3 4 z
duplicated
호출 내에서 dat
중복을 원하지 않는 열만 전달합니다 . 이 코드는 항상 모호한 값 중 첫 번째 값 을 자동으로 선택 합니다. (이 경우 x)
사용 unique()
:
dat <- data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))
dat[row.names(unique(dat[,c("id", "id2")])),]
다음은 dplyr
id 및 id2 열을 기반으로 중복되지 않는 행을 유지 하는 몇 가지 옵션입니다.
library(dplyr)
df %>% distinct(id, id2, .keep_all = TRUE)
df %>% group_by(id, id2) %>% filter(row_number() == 1)
df %>% group_by(id, id2) %>% slice(1)
@Joran 코드의 사소한 업데이트.
아래 코드를 사용하면 모호함을 피하고 두 열의 고유 한 항목 만 가져올 수 있습니다.
dat <- data.frame(id=c(1,1,3), id2=c(1,1,4) ,somevalue=c("x","y","z"))
dat[row.names(unique(dat[,c("id", "id2")])), c("id", "id2")]
참고 URL : https://stackoverflow.com/questions/9944816/unique-on-a-dataframe-with-only-selected-columns
반응형
'Programing' 카테고리의 다른 글
C # .net 코드에서 SQL 저장 프로 시저에 null 변수를 전달하는 방법 (0) | 2020.11.24 |
---|---|
Linux에서 디렉토리의 모든 * .js 파일을 재귀 적으로 찾으려면 어떻게해야합니까? (0) | 2020.11.24 |
Vim / vi에서 백 스페이스 키가 작동하지 않음 (0) | 2020.11.24 |
AngularJS에서 브로드 캐스트 이벤트를 어떻게 테스트 할 수 있습니까? (0) | 2020.11.24 |
상수 및 휘발성으로 선언 된 포인터 (0) | 2020.11.24 |