我有一个包含多个列的数据矩阵,其中包括Revenue,Cost_Unit和Quantity.我想在我的矩阵中附加一个"利润"列,计算为Revenue - Cost_Unit*Quantity.最有效的方法是什么?我的矩阵中可能有一百万行,所以我希望它尽可能快.
这是我得到的错误.有人可以帮帮我吗?
final_set$Profit = final_set$Revenue - (final_set$Cost_Unit*final_set$Quantity)
Run Code Online (Sandbox Code Playgroud)
在误差[<-.data.table(t,J =名称,值=值):分配给新的列"利润"的RHS是零长度但不是空列表().对于新列,RHS必须是空列表()以创建空列表列,或者长度> 0; 例如NA_integer_,0L等
假设您有以下数据:
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)
Run Code Online (Sandbox Code Playgroud)
这会给你:
# 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
Run Code Online (Sandbox Code Playgroud)