我有一个包含这些列的数据框
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
答案 0 :(得分:2)
不需要申请功能。您可以使用矢量化方法:
Data$Margin <- Data$Qty * (Data$Sales.Price - Data$COGS)