使用自定义组功能聚合数据

时间:2014-06-19 14:02:22

标签: r grouping aggregate

我有一个数据框,我想在其某些列值上应用聚合函数,并通过自定义键对它们进行分组。

我有一个自定义函数,它将数据帧的一行作为输入并生成密钥。如何调用aggregate函数(或sapplytapply ...)

基本上是这样的:

GetRowKey <- function(row_value) { GetRowKey = row_value[1] % 5 }

aggregate(my_data, GetRowKey, FUN=max)

使用这样的输入:

1,1
6,2
1,3
7,3
12,5
11,8

我会得到以下结果:

1,8
2,5

1 个答案:

答案 0 :(得分:2)

在R中,您应该使用%%,而不仅仅是%个符号。在我看来,你真的不需要这里的自定义功能。将函数体直接替换为aggregate()函数更容易。

> d <- read.table(text = "1,1
   6,2
   1,3
   7,3
   12,5
   11,8", sep = ",")

> aggregate(d[[2]], d[1] %% 5, max)
#   V1 x
# 1  1 8
# 2  2 5

按原样,您的自定义函数不会返回任何内容。如果您要将其调整为

> GetRowKey <- function(row_value) { row_value[1] %% 5 }

我们可以在aggregate()中使用它,如下所示,

> aggregate(dat[[2]], GetRowKey(dat[1]), max)
  V1 x
1  1 8
2  2 5