R - 基于条件的变量和删除重复值的循环

时间:2017-04-30 20:37:41

标签: r

我想循环遍历变量“Item”中的每个唯一值(即A,B,C),并且只保留每个项目的ID号最小的行,删除每个相应项目的其他行。

所以,我现在有一个如下所示的数据框:

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 个答案:

答案 0 :(得分: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")