R中的通用/动态功能

时间:2016-02-27 12:16:17

标签: r formulas

此代码将为您提供有关问题结构的视图。每个单元格(Q1至Q4的产品值)基于公式计算

Q1<-c("=DN1+1","=DN2+3","=DN3*4","=DN4-1","=DN1 + DN2 + DN3 + DN4") 
Q2<-c("=DK1", "=DK2","=DN3+DK3","=DN4+DL3- DM1 * ( DM2 + ((-DJ7-DK3) / S20+ S22) + S223 + Y446 / ZQ282 - W223)","=DG1 + DG2 + DG3 + DG4")
Q3<-c("=DK1","=DK2","=DG3 (-1 qtr) +DK3","=DG4(-1 qtr)+DL3- DM1 * ( DM2 + ((-DJ7-DK3) / S20+ S22) + S223 + Y446 / ZQ282 - W223)","=DG1 + DG2 + DG3 + DG4")
Q4<-c("=DK1","=DK2","DG3 (-1 qtr) +DK3","=DG4(-1 qtr)+DL3- DM1 * ( DM2 + ((-DJ7-DK3) / S20+ S22) + S223 + Y446 / ZQ282 - W223)","DG1 + DG2 + DG3 + DG4")
D1<-data.frame(Q1,Q2,Q3,Q4)
D1$Product<-c("A","B","C","D","Total")
D1$Original_Price<-c("DN1","DN2","DN3","DN4","DN7")
D1$New_Price<-c("DG1","DG2","DG3","DG4","DG7")
D1<-D1[,c(5,6,7,1,2,3,4)]

我写的函数的代码是here

问题1 : 目前,我的函数具有计算单元格值的硬编码公式

Value[10] <- DN3 + DK3
Value[11] <- as.numeric(Value[10]) + DK3
Value[12] <- as.numeric(Value[11]) + DK3

如果对每个公式进行编码,这使得计算我拥有的300个左右单元格的值(28个产品和9个季度的真实数据集)很有挑战性。

问题2: 当我创建函数时,输入数据格式中不存在Period(Q1,Q2,Q3等)。新的输入数据格式(导入为csv / excel)为:

Code    Value    Period
DN1     100        Q1
DN1     200        Q2
DN1     300        Q3
DN1     400        Q4
DN2     500        Q1
DN2     600        Q2 

即。每个单元代码(例如DN1,DN2等)将出现每个季度的值

因此,如果使用DN1 + DN2计算单元格值,则对于Q1,该值为100 + 500 = 600。

我想摆脱这些已编码的公式,因为我有300多个单元格(因此有300个公式),我必须手动输入。另外,我需要在计算之前查看代码和期间的函数。

输出应如下所示:

Product  Category         Entity    Period  Value
A        Original Price   ABC        Q1     994
A        New Price        ABC        Q2     933
A        New Price        ABC        Q3     933
A        New Price        ABC        Q4     933
B        Original Price   ABC        Q1     582
B        New Price        ABC        Q2     786
B        New Price        ABC        Q3     786
B        New Price        ABC        Q4     786

预期解决方案:获取输入数据并创建数据帧。创建一个excel / csv,其中包含每个单元格的公式(而不是在代码中进行硬编码),并使用类似eval(parse)的内容来读取excel / csv中的公式,并使用来自不同excel / csv的输入数据并创建以上格式的输出表。 我已经尝试但未能修改我的功能。

建议将非常感谢。

0 个答案:

没有答案