我在函数中使用因子时遇到了一些麻烦,或者只是在基本计算中使用它们。我有一个类似这样的数据框(但有多达 6000 个不同的因素)。
df<- data.frame( p <- runif(20)*100,
q = sample(1:100,20, replace = T),
tt = c("e","e","f","f","f","i","h","e","i","i","f","f","j","j","h","h","h","e","j","i"),
ta = c("a","a","a","b","b","b","a","a","c","c","a","b","a","a","c","c","b","a","c","b"))
colnames(df)<-c("p","q","ta","tt")
现在价格 = p 和数量 = q 是我的变量,而 tt 和 ta 是不同的因素。
现在,我首先想通过 tt 中的每个不同因素找到每单位 q 的平均价格
(p*q ) / sum(q) by tt
在这种情况下,这将给我一个包含 3 个不同总和的列表,由 a、b 和 c 组成(我有 6000 个不同的因素,所以我需要聪明地做 :))。
我曾尝试使用 split 来制作列表,在这种情况下,我可以让每个单独的 tt 因子包含价格,另一个包含数量,但我似乎无法让它们例如做一个平均值。我也尝试过使用tapply,但我还是看不到如何将因素纳入其中?
编辑:我可以看到我需要清除:
我需要找到 3 个总和,即平均价格公关。q 给定每个因素,所以在这个简化的情况下,它将是:
a: (Row (1,2,3, 7, 11, 13,14,18) 的 p*q 总和 / sum (q for row (1,2,3, 7, 11, 13,14,18) )
所以结果应该是 a、b 和 c 的平均价格,也就是 3 个值。