2017-09-15 1 views
-1

나는이 데이터가있는 경우 :고유 한 행만 유지하면서 열을 무시하는 방법은 무엇입니까?

df1 <- data.frame(name = c("apple", "apple", "apple", "orange", "orange"), 
     ID = c(1, 2, 3, 4, 5), 
     is_fruit = c("yes", "yes", "yes", "yes", "yes")) 

및 I 출력이 같다고 같은 ID 열에만 고유 행을 유지하지만 무시해야합니다 : 나는이 작업을 수행 할 수있는 방법

df2 <- data.frame(name = c("apple", "orange"), 
     ID = c(1, 4), 
     is_fruit = c("yes", "yes")) 

df2 
# name ID is_fruit 
#1 apple 1  yes 
#2 orange 4  yes 

을 이상적으로는 dplyr?

+3

베이스 R :'df1 [! duplicated (df1 [-2]),]' –

답변

3

distinct 기능을 사용할 수 있습니다. 변수를 명시 적으로 지정하면 이러한 열을 기반으로 한 고유 한 행을 유지할 수 있습니다. 또한 ?distinct에서 : 여러 행이 입력의 특정 조합이있는 경우

, 첫 번째 행은 유지됩니다

distinct(df1, name, is_fruit, .keep_all = T) 
# name ID is_fruit 
#1 apple 1  yes 
#2 orange 4  yes 
2

자료 R

df1[!duplicated(df1[!names(df1) %in% c("ID")]),] 
# name ID is_fruit 
#1 apple 1  yes 
#4 orange 4  yes 

c("ID")을 무시할 열의 이름으로 바꾸십시오.

관련 문제