使用应用功能

时间:2016-01-17 07:25:08

标签: r apply

我有一个包含这些列的数据框

Qty  Sales Price  COGS  
  1          500   200  
  2          900   400   
  3         1000   300   
  1          300   150

我想计算每一行的利润。因此,对于第1行,如果销售价格 - COGS(500-200)利润为300。 一个条件是,如果数量大于1,那么数量销售数量 COGS =毛利润。

我用了循环

for (i in 1:nrow(Data)) {
  if(Data[i,"Qty"]<=1) {Data[i,"Margin"]<-Data[i,"Sales.Price"]-Data[i,"COGS"]}    
  if(Data[i,"Qty"]>=1){Data[i,"Margin"]<-Data[i,"Qty" * "Sales.Price"]-Data[i,"Qty * "COGS"]}
}

But

我想使用应用功能

并在数据框中返回我的答案,因为Margin在我当前的数据框中作为向量附加,而不是作为列表或矩阵。

Qty    Sales Price    COGS    Margin  
  1            500     200       300  
  2            900     400      1000  
  3           1000     300      2100  
  1            300     150       150  

1 个答案:

答案 0 :(得分:2)

不需要申请功能。您可以使用矢量化方法:

Data$Margin <- Data$Qty * (Data$Sales.Price - Data$COGS)