R 在不降低数据帧维数的情况下进行聚合
我试图在R中使用聚合函数,希望输出数据帧的维度保持不变。例如:假设我有以下数据帧R 在不降低数据帧维数的情况下进行聚合,r,group-by,aggregate,dimension,R,Group By,Aggregate,Dimension,我试图在R中使用聚合函数,希望输出数据帧的维度保持不变。例如:假设我有以下数据帧 Name------Type------ Price Prod1-----A-------- $1 Prod2----A--------- $5 Prod3----B---------- $7 Prod4-----B--------- $9 在R中使用聚合函数后,将类型和函数聚合为价格之和。我得到以下结果: Type-------Value A-----
Name------Type------ Price
Prod1-----A-------- $1
Prod2----A--------- $5
Prod3----B---------- $7
Prod4-----B--------- $9
在R中使用聚合函数后,将类型和函数聚合为价格之和。我得到以下结果:
Type-------Value
A-----------6
B-----------16
但是,我希望数据帧的维度保持不变。例如:
Name-----Type----Price----Value
Prod1----A-------$1-------$6
Prod2----A-------$5--------$6
Prod3----B--------$7-------$16
Prod 4----B-------$9--------$16
我不想在此应用程序中使用循环。请建议其他方法。我们可以使用
ave
frombase R
df1$Value <- with(df1, paste0("$", ave(as.numeric(sub("[$]", "", Price)),
Type, FUN = sum)))
df1$Value
#[1] "$6" "$6" "$16" "$16"
df1$Value使用dplyr
library(dplyr)
df %>%
group_by(Type) %>%
mutate(Value = sum(Price))
或使用数据表
library(data.table)
setDT(df)[, Value := sum(Price), by = Type]
# Name Type Price Value
#1: P1 A 1 6
#2: P1 A 5 6
#3: P3 B 7 16
#4: P4 B 9 16