如何在dplyr中将一个组的值与其他组的值分开
我有如下数据帧如何在dplyr中将一个组的值与其他组的值分开,r,R,我有如下数据帧 fund_name Industry quantity month ABC IT 20 201704 ABC IT 20 201704 ABC Industrials 30 201704 ABC Auto 40
fund_name Industry quantity month
ABC IT 20 201704
ABC IT 20 201704
ABC Industrials 30 201704
ABC Auto 40 201704
ABC Pharma 50 201704
DEF IT 20 201704
DEF Auto 35 201704
DEF Auto 35 201704
DEF Pharma 40 201704
我想计算的是行业构成占数量的百分比。
e、 g.对于基金,ABC IT行业在201704月的贡献率为40/(40+30+20+50)=0.28,即28%
所需的数据帧应该如下所示
fund_name Industry quantity month
ABC IT 40/(40+30+20+50) 201704
ABC Industrials 30/(40+30+20+50) 201704
ABC Auto 40/(40+30+20+50) 201704
ABC Pharma 50/(40+30+20+50) 201704
DEF IT 20/(20+70+40) 201704
DEF Auto 70/(20+70+40) 201704
DEF Pharma 40/(20+70+40) 201704
我在下面试过了,但它只给出了数量的总和
final_MF %>%
group_by(fund_names,Month,Industry) %>%
summarise(total_quant = sum(Quantity)) %>%
as.data.frame()
如何在dplyr中实现这一点?以下几种方法之一:
df <- read.table(header=TRUE, text="fund_name Industry quantity month
ABC IT 20 201704
ABC Industrials 30 201704
ABC Auto 40 201704
ABC Pharma 50 201704
DEF IT 20 201704
DEF Auto 35 201704
DEF Pharma 40 201704")
df
library(dplyr)
want<-select(
mutate(
left_join(df,
df %>%
group_by(fund_name) %>%
summarize(quantity_sum=sum(quantity)),
by="fund_name"),
quantity=quantity/quantity_sum),
-quantity_sum)
want
df%
汇总(数量总和=总和(数量)),
by=“基金名称”),
数量=数量/数量(总和),
-数量(总)
希望
遵循R代码让我找到了我想要的东西
industry_composition <- final_reliance_MF %>%
group_by(fund_names,Industry,Month) %>%
summarise(total_quant = sum(Quantity)) %>%
group_by(fund_names,Month) %>%
mutate(perc = (total_quant/sum(total_quant))*100) %>%
as.data.frame()
行业构成%
分组依据(基金名称、行业、月份)%>%
总结(总数量=总和(数量))%>%
分组人(基金名称,月份)%>%
变异(perc=(总数量/和(总数量))*100)%>%
as.data.frame()
您的意思是“按基金名称、行业和月份分组”?按基金名称、行业和月份分组如果根据您展示的示例按基金名称、行业和月份分组,则仅给出1。我没有遵循分母的逻辑,我不确定你的预期是否正确。也许当我这样做时,df1%>%groupby(fund\u name)%%>%mutate(newquant=quantity/sum(quantity))
@akrundf1%>%groupby(fund\u name,industry,month)%%>%mutate(newquant=quantity/sum(quantity))
并没有给出我的意图。