如何基于R中的标准组合来对数据进行子集化

时间:2016-08-18 05:52:13

标签: r subset

我有数百万行数据,我需要创建一个子集。尽管努力并在网上搜索,但没有成功。问题是:

如何为所有value创建一个仅包含ID的最小值的子集。 item组合?

数据结构如下所示:

> df = data.frame(ID = c(1,1,1,1,2,2,2,2),
            item = c('A','A','B','B','A','A','B','B'),
            value = c(10,5,3,2,7,8,9,10))

> df
   ID item value
1  1    A    10
2  1    A     5
3  1    B     3
4  1    B     2
5  2    A     7
6  2    A     8
7  2    B     9
8  2    B    10

结果应如下所示:

  ID item value
  1    A     5
  1    B     2
  2    A     7
  2    B     9

任何提示都非常感谢。谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以使用aggregate中的baseR分组变量'ID'和'item'来获取'{1}}的'值'

min

或使用aggregate(value~., df, min) # ID item value #1 1 A 5 #2 2 A 7 #3 1 B 2 #4 2 B 9

dplyr

library(dplyr) df %>% group_by(ID, item) %>% summarise(value = min(value))

data.table

或另一个选项是library(data.table) setDT(df)[, .(value = min(value)) , .(ID, item)] 并在分组后获得order

first