将计算列添加到R中的数据矩阵

时间:2014-05-09 16:06:04

标签: r

我有一个包含多个列的数据矩阵,其中包括Revenue,Cost_Unit和Quantity。我想在我的矩阵中附加一个“利润”列,计算为Revenue - Cost_Unit * Quantity。最有效的方法是什么?我的矩阵中可能有一百万行,所以我希望它尽可能快。

这是我得到的错误。有人可以帮帮我吗?

 final_set$Profit = final_set$Revenue - (final_set$Cost_Unit*final_set$Quantity)

[<-.data.table中的错误(x,j = name,value = value):   分配给新列'Profit'的RHS是零长度但不是空列表()。对于新列,RHS必须是空列表()以创建空列表列,或者具有长度&gt; 0;例如NA_integer_,0L等

1 个答案:

答案 0 :(得分:5)

假设您有以下数据:

set.seed(1)

Cost_Unit <- rnorm(10, 100, 10)
Quantity <- rnorm(10, 1000, 100)
Revenue <- Cost_Unit*runif(10,1.02,1.1)*Quantity
final_set <- data.frame(Cost_Unit, Quantity, Revenue)

final_set$Profit <- with(final_set, Revenue - Cost_Unit * Quantity)

这会给你:

#   Cost_Unit  Quantity   Revenue   Profit
#1   93.73546 1151.1781 117151.15 9244.941
#2  101.83643 1038.9843 113399.64 7593.181
#3   91.64371  937.8759  93052.92 7102.482
#4  115.95281  778.5300  96072.12 5799.383
#5  103.29508 1112.4931 122083.18 7168.122
#6   91.79532  995.5066  98981.19 7598.346
#7  104.87429  998.3810 106994.02 2289.520
#8  107.38325 1094.3836 124355.50 6837.037
#9  105.75781 1082.1221 123436.37 8993.504
#10  96.94612 1059.3901 110449.52 7745.766