Я рассчитываю индекс с помощью dplyr. Индекс представляет собой сумму квадратов соотношений между каждой записью и общей записью в группе.
library(dplyr)
set.seed(1e2)
firm_id <- sample(1:3, 1e2, rep=T)
pro_id <- sample(1:8, 1e2, rep=T)
emplo_id <- sample(1:5, 1e2, rep=T)
cost <- round(abs(rnorm(1e2, 20)), 2)
df <- data.frame(firm_id, pro_id, emplo_id, cost)
df_index <- df %>% group_by(firm_id,pro_id) %>%
mutate(INDEX = sum((cost/sum(cost))^2))
Теперь я хочу рассчитать, насколько каждая запись вносит вклад в idex, создаваемую ее группой, а это означает, что я хочу рассчитать новый индекс, как если бы стоимость входа для значения была 0, и это для каждой записи, как если бы в цикле (затем разделите новый индекс по старому).
Ожидаемые результаты:
firm_id <- c(1,1,1)
pro_id <- c(1,1,1)
emplo_id <- c(1:3)
cost <- c(1,50,100)
INDEX <- rep(0.5482654,3)
newINDEX <- c(0.5555556,0.9803941,0.9615532)
df_index <- data.frame(firm_id, pro_id, emplo_id, cost, INDEX, newINDEX)
С mutate я понятия не имею, как это сделать. Любые предложения приветствуются!
as if the entry cost is 0
- person akrun   schedule 08.08.2018