R 取百分比向量并乘以列
我在下面有一个数据集示例:R 取百分比向量并乘以列,r,join,dplyr,R,Join,Dplyr,我在下面有一个数据集示例: Gran1 <- c('A','A'); Gran2 <- c('B', 'B'); Gran3 <-c('C','D'); Metric1 <- c(1500, 1700); Metric2 <- c(200, 50) df <- data.frame(Gran1, Gran2, Gran3, Metric1, Metric2) df Gran1 Gran2 Gran3 Metric1 Metric
Gran1 <- c('A','A'); Gran2 <- c('B', 'B'); Gran3 <-c('C','D'); Metric1 <- c(1500, 1700); Metric2 <- c(200, 50)
df <- data.frame(Gran1, Gran2, Gran3, Metric1, Metric2)
df
Gran1 Gran2 Gran3 Metric1 Metric2
A B C 1500 200
A B D 1700 50
结果应该如下所示:
Gran1 Gran2 Gran3 Metric1 Metric2 Percent M1*Percent M2*Percent
A B C 1500 200 0 0 0
A B C 1500 200 0.001 1.5 0.2
A B C 1500 200 0.002 3 0.4
A B C 1500 200 0.003 4.5 0.6
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
A B C 1500 200 0.990 1485 198
A B C 1500 200 1.000 1500 200
A B D 1700 50 0 0 0
A B D 1700 50 0.001 1.7 0.05
A B D 1700 50 0.002 3.4 0.10
A B D 1700 50 0.003 5.1 0.15
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
我想你可以使用tidyr的
穿越。调整您的示例将产生:
library(tidyr)
library(dplyr)
df1 <- data.frame(v1=c("A","B"), v2=c("C","D"), metric1=c(10,20), metric2=c(30,40))
df2 <- data.frame(percent=seq(0,100, by=10))
df <- crossing(df1, df2)
df %<>% mutate(p_metric1=metric1*percent, p_metric2=metric2*percent)
library(tidyr)
图书馆(dplyr)
df1
library(tidyr)
library(dplyr)
df1 <- data.frame(v1=c("A","B"), v2=c("C","D"), metric1=c(10,20), metric2=c(30,40))
df2 <- data.frame(percent=seq(0,100, by=10))
df <- crossing(df1, df2)
df %<>% mutate(p_metric1=metric1*percent, p_metric2=metric2*percent)