我有一个包含多个列的数据矩阵,其中包括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等
答案 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