按规则聚合R中的值
我正在对分类级别太多的数据进行回归分析。我想知道如何为多个分类级别聚合值?例如,让我们使用两列A(分类)和B(数字)的数据: 现在我想在分类变量A中组合相邻的级别。聚合函数是求和。结果应该如下所示:按规则聚合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
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