2017-04-30 8 views
0

変数 "Item"(つまりA、B、C)のそれぞれの一意の値をループし、最低のID番号各アイテムについて、対応するアイテムごとに他の行を削​​除します。R - 変数の値をループして条件に基づいて重複を削除する

だから、私は今、この権利のように見えるのデータフレームがあります。

Item Cost ID 

A  4  1 
A    3 
B  39  10 
B    18 
B    21 
C  290  15 
C   

をそして、私はこのようなものとします

Item Cost ID 

A  4  1 
B  39  10 
C  290  15 

私はこれをどのように行うのですか?

(事前のおかげで - !私はRに新たなんだが)

答えて

1

あなたのタスクは、dplyrと非常に簡単ですが、様々なアプローチがあります。

library(dplyr) 
df %>% group_by(Item) %>% filter(ID == min(ID, na.rm = TRUE)) 

Source: local data frame [3 x 3] 
Groups: Item [3] 

    Item Cost ID 
    <fctr> <dbl> <dbl> 
1  A  4  1 
2  B 39 10 
3  C 290 15 

データを使用:

structure(list(Item = structure(c(1L, 1L, 2L, 2L, 2L, 3L, 3L), .Label = c("A", 
"B", "C"), class = "factor"), Cost = c(4, NA, 39, NA, NA, 290, 
NA), ID = c(1, 3, 10, 18, 21, 15, NA)), .Names = c("Item", "Cost", 
"ID"), row.names = c(NA, -7L), class = "data.frame") 
+0

うわー、そんなにありがとう!間違いなくトリック:) – Sarah

+0

'base R'オプションは' df [!duplicated(df $ Item [order(df $ Item、df $ ID)])] ' – akrun

関連する問題