我有一组包含类别值的向量,让我们调用它们,C1,C2,......我有一个名为Fr的频率向量。所有载体长度相同。我想将Fr中的频率值除以取决于类别的总和。在使用numpy的Python中,这非常简单。
# Find unique categories
unqC1 = np.unique(C1)
unqC2 = np.unique(C2)
# For each unique category in C1 and C2 sum frequencies and normalize
for uC1 in unqC1:
for uC2 in unqC2:
mask = (uC1 == C1) & (uC2 == C2)
nrmFactor = np.sum(Fr[mask])
Fr[mask] /= nrmFactor
我怎样才能在R中这样做?为简单起见,我可以说我在R中有一个表X,列X $ Fr,X $ C1和X $ C2。
答案 0 :(得分:0)
我不完全确定,但看看这是否实现了目标:
X$nrmFactor <- ave(X$Fr, X$C1, X$C2, FUN=function(x) sum(x)/length(x))
ave
函数计算第二个参数定义的类别中每个案例的值以及FUN之前的任何其他参数。这个实现将给你一个平均值。由于ave的默认函数是mean
,即(ave)rage,你可以省略FUN参数。