我有一个带有
的数据框X我已经计算出一个单独的数据框Y,它具有
我想通过遍历X的每一行并从每个观察到的计数中减去相应类别的类别平均值来创建Z的新向量。
Z = [X $ count_1-Y $ mean_k,...,X $ count_n-Y $ mean_k]
我想使用R而不使用其他软件包。
我知道我可以使用for循环来执行此操作,该循环检查X中观察到的计数的标签是否与Y中均值的标签相匹配,但这似乎效率不高。如何将这个操作向量化?
编辑:
我知道了。这给了我我想要的东西:
apply(SandwichAnts,1,function(x)as.numeric(x [“ Ants”]))-(mean_fillings [mean_fillings $ Filling == x [“ Filling”],] [,2]))
答案 0 :(得分:0)
# generate X and Y
X <- data.frame(counts = c(1, 2, 3, 4),
labels = c('a', 'a', 'b', 'b'))
Y <- aggregate(X$counts, by=list(X$labels),
FUN=mean)
colnames(Y) <- c('label', 'avg')
Y
# label avg
#1 a 1.5
#2 b 3.5
# use the labels as row names for Y
rownames(Y) <- Y$label
D <- X$counts - Y[X$labels, 'avg']
D
# [1] -0.5 0.5 -0.5 0.5