在R中创建一个单表,提供A列在B列和C列之间的平均值[重复]

问题描述 投票:0回答:1

我想使用xtabs()函数(在R中)创建一个给定的3列数据框架的单一应急表。下面的代码在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

创建一个表格的正确方法是什么? 将一列的平均值跨越其他(不同)两列?谢谢你的建议

r contingency
1个回答
1
投票

我们可以使用 xtabs 归纳输出后,用 aggrregate

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

不建议将某些值改为空白。"" 因为它可能会与其他步骤产生问题

© www.soinside.com 2019 - 2024. All rights reserved.