Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 内环突变_R_Loops_Dplyr_Mutate - Fatal编程技术网

R 内环突变

R 内环突变,r,loops,dplyr,mutate,R,Loops,Dplyr,Mutate,我使用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

我使用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))
库(dplyr)
种子集(1e2)

firm_id您可以使用
purrr::map_dbl()
在每个 分组,然后应用一个函数替换给定索引处的
成本
使用0,然后重新计算索引。下面是一个例子,其中的数据 您为以下各项提供了预期输出:

库(dplyr)
图书馆(purrr)
#用于计算索引值的函数
指数%
分组依据(公司id、专业id)%>%
mutate(new=map\u dbl(row\u number(),function(i){
索引(替换(成本,i,0))
}))
#>#tibble:3 x 7
#>#组:公司id、专业id[1]
#>公司id专业id员工id成本指数新建指数新建
#>                  
#> 1       1      1        1     1 0.548    0.556 0.556
#> 2       1      1        2    50 0.548    0.980 0.980
#> 3       1      1        3   100 0.548    0.962 0.962

通过附加的辅助功能,您还可以以更简洁的方式执行此操作:

索引_,不带%
分组依据(公司id、专业id)%>%
变异(新=不带(行号(),成本)的索引)
#>#tibble:3 x 7
#>#组:公司id、专业id[1]
#>公司id专业id员工id成本指数新建指数新建
#>                  
#> 1       1      1        1     1 0.548    0.556 0.556
#> 2       1      1        2    50 0.548    0.980 0.980
#> 3       1      1        3   100 0.548    0.962 0.962

由(v0.2.0.9000)于2018-08-08创建。

您能显示预期输出吗?此外,set.seed将使其具有可复制性。计算不清楚,就好像输入成本为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)