R-加速回路
我想知道这个循环是否可以加快,我想知道你是否可以帮我解决这个问题 我用了所有的技巧,但我仍然认为这还不够 问题在于将一年df的金额从下一年df中减去。我有两个数据帧:R-加速回路,r,performance,loops,R,Performance,Loops,我想知道这个循环是否可以加快,我想知道你是否可以帮我解决这个问题 我用了所有的技巧,但我仍然认为这还不够 问题在于将一年df的金额从下一年df中减去。我有两个数据帧: df_2016 <- data.frame( subject = rep(1:195, 65*39), items = rep(1:39, 195*65), sub_items = rep(1:65, 195*39), value = sample(1:100000000,(195*65*39)), pe
df_2016 <- data.frame(
subject = rep(1:195, 65*39),
items = rep(1:39, 195*65),
sub_items = rep(1:65, 195*39),
value = sample(1:100000000,(195*65*39)),
period = rep("2016",(195*65*39)))
df_2016 <- df_2016[sample(1:(195*65*39),450000),] # See Reference "A" below
df_2017 <- data.frame(
subject = rep(1:195, 65*39),
items = rep(1:39, 195*65),
sub_items = rep(1:65, 195*39),
value = sample(1:100000000,(195*65*39)),
period = rep("2017",(195*65*39)))
df_2016您的问题在于数据的生成。主题
、项目
和子项目
的构造不会导致主题
、项目
和子项目
的唯一组合,从而违反您的假设:
没有重复的行
我已尝试使用expand.grid()
函数创建另一版本的数据,该数据具有subject
、items
和sub_items
的独特组合
DF2016 <- data.frame(expand.grid(1:195,1:65,1:39),
value = sample(1:100000000,(195*65*39)),
period = rep("2016",(195*65*39)))
DF2016 <- DF2016[sample(1:(195*65*39),450000),]
DF2017 <- data.frame(expand.grid(1:195,1:65,1:39),
value = sample(1:100000000,(195*65*39)),
period = rep("2017",(195*65*39)))
2017年的值表示为value.x
,2016年的值表示为value.y
。这就产生了
> head(res)
Var1 Var2 Var3 value.x period.x value.y period.y difference
1 1 1 1 94920289 2017 84618631 2016 10301658
2 2 1 1 31008444 2017 87524572 2016 -56516128
3 3 1 1 44687050 2017 NA <NA> NA
4 4 1 1 87458715 2017 83105988 2016 4352727
5 5 1 1 40977802 2017 22528409 2016 18449393
6 6 1 1 80460053 2017 NA <NA> NA
>头部(res)
Var1 Var2 Var3 value.x period.x value.y period.y差异
1 1 1 1 94920289 2017 84618631 2016 10301658
2 2 1 1 31008444 2017 87524572 2016 -56516128
3 3 1 44687050 2017年不适用
4 4 1 1 87458715 2017 83105988 2016 4352727
5 5 1 1 40977802 2017 22528409 2016 18449393
6180180460053 2017年不适用
您的问题在于数据的生成。主题
、项目
和子项目
的构造不会导致主题
、项目
和子项目
的唯一组合,从而违反您的假设:
没有重复的行
我已尝试使用expand.grid()
函数创建另一版本的数据,该数据具有subject
、items
和sub_items
的独特组合
DF2016 <- data.frame(expand.grid(1:195,1:65,1:39),
value = sample(1:100000000,(195*65*39)),
period = rep("2016",(195*65*39)))
DF2016 <- DF2016[sample(1:(195*65*39),450000),]
DF2017 <- data.frame(expand.grid(1:195,1:65,1:39),
value = sample(1:100000000,(195*65*39)),
period = rep("2017",(195*65*39)))
2017年的值表示为value.x
,2016年的值表示为value.y
。这就产生了
> head(res)
Var1 Var2 Var3 value.x period.x value.y period.y difference
1 1 1 1 94920289 2017 84618631 2016 10301658
2 2 1 1 31008444 2017 87524572 2016 -56516128
3 3 1 1 44687050 2017 NA <NA> NA
4 4 1 1 87458715 2017 83105988 2016 4352727
5 5 1 1 40977802 2017 22528409 2016 18449393
6 6 1 1 80460053 2017 NA <NA> NA
>头部(res)
Var1 Var2 Var3 value.x period.x value.y period.y差异
1 1 1 1 94920289 2017 84618631 2016 10301658
2 2 1 1 31008444 2017 87524572 2016 -56516128
3 3 1 44687050 2017年不适用
4 4 1 1 87458715 2017 83105988 2016 4352727
5 5 1 1 40977802 2017 22528409 2016 18449393
6180180460053 2017年不适用
只需合并两个数据帧并跨列运行所需的计算。提示:思考data.table当您思考速度时,是否愿意发布结果以便我确定最终输出?只需合并两个数据帧并跨列运行所需的计算。提示:思考data.table当您思考速度时,要不要公布结果,这样我才能确定最终的输出?你是对的,我犯了一个错误:主体var应该是195乘以1,然后是195乘以2,依此类推。最后,虽然堆栈溢出请不要感谢,但我非常感谢您。你的帮助非常有用。你是对的,我犯了一个错误:主题变量应该是195乘以1,然后是195乘以2,依此类推。最后,虽然堆栈溢出请不要感谢,但我非常感谢您。你的帮助非常有用。