R 取次平均值,并用其分类创建一个新列
我的数据集大致如下:R 取次平均值,并用其分类创建一个新列,r,aggregate,R,Aggregate,我的数据集大致如下: place_id person_id amount A Huey 20 A Louie 30 A Dewey 40 B Huey 80 B Dewey 100 C Louie 500 假设这个地方是一家餐厅,我想计算每个地方的人均支出,并将其添加为一个新列: place_id p
place_id person_id amount
A Huey 20
A Louie 30
A Dewey 40
B Huey 80
B Dewey 100
C Louie 500
假设这个地方是一家餐厅,我想计算每个地方的人均支出,并将其添加为一个新列:
place_id person_id amount pc_spend
A Huey 20 30
A Louie 30 30
A Dewey 40 30
B Huey 80 90
B Dewey 100 90
C Louie 500 500
我知道如何使用aggregate()计算R中的pc支出,但我不知道如何将计算结果反馈到每一行 以下是我使用
dplyr的解决方案:
library(dplyr)
df %>% group_by(place_id) %>% mutate(pc_spend = mean(amount) )
Source: local data frame [6 x 4]
Groups: place_id
place_id person_id amount pc_spend
1 A Huey 20 30
2 A Louie 30 30
3 A Dewey 40 30
4 B Huey 80 90
5 B Dewey 100 90
6 C Louie 500 500
这是我(承认有点笨拙)在BaseR中的解决方案
pc_spend <- tapply(df$amount, df$place_id, mean)
df[df$"place_id" == "A" , "pc_spend"] <- pc_spend[1]
df[df$"place_id" == "B" , "pc_spend"] <- pc_spend[2]
df[df$"place_id" == "C" , "pc_spend"] <- pc_spend[3]
df
place_id person_id amount pc_spend
1 A Huey 20 30
2 A Louie 30 30
3 A Dewey 40 30
4 B Huey 80 90
5 B Dewey 100 90
6 C Louie 500 500
pc\u花费