创建一个 table 提供 R 中 B 列和 C 列的 A 列的平均值

Create a single table providing the mean values of column A across columns B and C in R

我想使用 xtabs() 函数(在 R 中)给定数据框的 3 列来创建单个意外事件 table。下面的代码适用于 2 列:

xtabs(~B + C, data = theData) #contingency table for two columns

但是当我再添加一个属性时,出现错误:

xtabs(~B + C + mean(A), data = theData)

Error in model.frame.default(formula = ~B + C +  : 
  variable lengths differ (found for 'mean(A)')

例如,对于下面的数据框

A   B   C
1   b1  c1
2   b1  c1
3   b1  c2
1   b1  c2
4   b2  c2
7   b2  c1

输出应该是这样的:

B   C   A
b1  c1  1.5
    c2  2.0
b2  c1  7.0
    c2  4.0

创建一个 table 的正确方法是什么,其中一列的平均值跨越其他(不同的)两列?谢谢

我们可以在用aggrregate

汇总输出后使用xtabs
xtabs(A ~ B + C , data = aggregate(A ~ B + C, theData, FUN = mean))
#   C
#B     c1  c2
#  b1 1.5 2.0
#  b2 7.0 4.0

或者在这种情况下,输出可以只是 aggregate

aggregate(A ~ B + C, theData, FUN = mean)
#   B  C   A
#1 b1 c1 1.5
#2 b2 c1 7.0
#3 b1 c2 2.0
#4 b2 c2 4.0

不建议将某些值更改为空白 "",因为它可能会导致其他步骤出现问题