R 根据条件将列除以值
我想将一列除以一个数字,但该数字将根据相应列的值而变化 主数据帧:R 根据条件将列除以值,r,R,我想将一列除以一个数字,但该数字将根据相应列的值而变化 主数据帧: ob_name reg_name Sales TVR 1 01-Jan-18 London 73000 0 2 08-Jan-18 London 54000 0 3 15-Jan-18 London 51000 22 4 22-Jan-18 London 50000 22 5 29-Jan-18 London 50000 0 6 05-Feb-18 London 71
ob_name reg_name Sales TVR
1 01-Jan-18 London 73000 0
2 08-Jan-18 London 54000 0
3 15-Jan-18 London 51000 22
4 22-Jan-18 London 50000 22
5 29-Jan-18 London 50000 0
6 05-Feb-18 London 71000 0
7 12-Feb-18 London 71000 0
8 01-Jan-18 Exeter 580 0
9 08-Jan-18 Exeter 760 0
10 15-Jan-18 Exeter 690 0
11 22-Jan-18 Exeter 620 32
12 29-Jan-18 Exeter 640 23
13 05-Feb-18 Exeter 520 0
14 12-Feb-18 Exeter 720 0
柱状物
reg_name Sales
1 Exeter 647.1429
2 London 60000.0000
输出(值除以reg_名称平均值)
代码到目前为止
regmean=aggregate(Sales~reg_name,data,mean)
#regmean=tapply(data$Sales,data$reg_name,mean)
i=intersect(regmean$reg_name,data$reg_name)
output<-data.frame(mapply(`/`, data[i,"reg_name"], regmean[i,"reg_name"]))
regmean=聚合(销售~reg_名称、数据、平均值)
#regmean=tapply(数据$Sales,数据$reg\u name,平均值)
i=相交(regmean$reg\u name,data$reg\u name)
输出您可以使用group_by和mutate找到组的平均值,然后定义比率
data_LE <- read.csv("data_LE.csv", stringsAsFactors = F)
data_LE%>%
group_by(reg_name)%>%
mutate(sal_mean=mean(Sales),TVR_mean=mean(TVR), sal_rt = Sales/sal_mean, TVR_rt= TVR/ TVR_mean)%>%
select(-Sales, -TVR, - sal_mean, -TVR_mean)
data\u LE%
分组人(注册人姓名)%>%
变异(sal_平均值=平均值(销售),TVR平均值=平均值(TVR),sal_rt=销售/sal_平均值,TVR rt=TVR/TVR平均值)%>%
选择(-Sales,-TVR,-sal_平均值,-TVR_平均值)
欢迎来到SO。请阅读多种方式。一种方式是df$Sales/ave(df$Sales,df$reg\u name)
Brilliant。谢谢@RonakShah。已经找了好几个小时了!很有帮助
data_LE <- read.csv("data_LE.csv", stringsAsFactors = F)
data_LE%>%
group_by(reg_name)%>%
mutate(sal_mean=mean(Sales),TVR_mean=mean(TVR), sal_rt = Sales/sal_mean, TVR_rt= TVR/ TVR_mean)%>%
select(-Sales, -TVR, - sal_mean, -TVR_mean)