2017-09-15 6 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")) 

を、私は、出力は次のようになりますよう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")を、無視する列の名前に置き換えます。

関連する問題