按规则聚合R中的值

按规则聚合R中的值,r,aggregate,R,Aggregate,我正在对分类级别太多的数据进行回归分析。我想知道如何为多个分类级别聚合值?例如,让我们使用两列A(分类)和B(数字)的数据: 现在我想在分类变量A中组合相邻的级别。聚合函数是求和。结果应该如下所示: A B A1-2 4 A3-4 9 非常感谢您的帮助。我们可以使用数据表。将“data.frame”转换为“data.table”(setDT(df1)),根据“a”中的值使用%/%创建一个新的分组变量。然后,按“A1”分组,我们得到“B”的和,并将“A”中的唯一元素粘贴在一起。如果不

我正在对分类级别太多的数据进行回归分析。我想知道如何为多个分类级别聚合值?例如,让我们使用两列A(分类)和B(数字)的数据:

现在我想在分类变量A中组合相邻的级别。聚合函数是求和。结果应该如下所示:

A     B
A1-2  4
A3-4  9

非常感谢您的帮助。

我们可以使用
数据表。将“data.frame”转换为“data.table”(
setDT(df1)
),根据“a”中的值使用
%/%
创建一个新的分组变量。然后,按“A1”分组,我们得到“B”的
,并将“A”中的
唯一
元素粘贴在一起。如果不需要,可以将分组变量“A1”赋值为NULL

library(data.table)
setDT(df1)[, A1:= (A-1)%/%2 +1][, 
  list(A= paste0("A",paste(unique(A), 
             collapse="-")), B= sum(B)) ,A1][,A1:= NULL][]
#      A B
#1: A1-2 4
#2: A3-4 9
基本R方法:

aggregate(B ~ A, data=transform(dat, A=cut(A,c(0,2,4),labels=c("A1-2","A3-4")) ), FUN=sum)

#     A B
#1 A1-2 4
#2 A3-4 9

你没有提到这个规则实际上是什么。是的,这个规则也适用,而且比较简单。此外,可调范围是伟大的,至少我知道如何改变它。
aggregate(B ~ A, data=transform(dat, A=cut(A,c(0,2,4),labels=c("A1-2","A3-4")) ), FUN=sum)

#     A B
#1 A1-2 4
#2 A3-4 9