使用应用函数

Using apply functions

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

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

我想计算每一行的利润。因此,对于第 1 行,如果销售价格 - 销货成本 (500-200) 利润为 300。 一个条件是如果 qty 大于 1 那么 QtySales Prce- QtyCOGS= gross profit.

我用了循环

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

我想使用应用功能

和 return 我在数据框中的回答是作为我当前数据框中的向量而不是列表或矩阵附加的边距。

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

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

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