Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在不降低数据帧维数的情况下进行聚合_R_Group By_Aggregate_Dimension - Fatal编程技术网

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-----

我试图在R中使用聚合函数,希望输出数据帧的维度保持不变。例如:假设我有以下数据帧

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
from
base 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