r - 创建一个表,提供 R 中 B 列和 C 列的 A 列的平均值

标签 r contingency

<分区>

我想使用 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

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

最佳答案

在使用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(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

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

关于r - 创建一个表,提供 R 中 B 列和 C 列的 A 列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61399057/

相关文章:

python - 如何在 Python 中组合逻辑门 NOT in list.count((x, not y))

r - Rmarkdown 中的两种频率表

r - 如何在 R 的表中强制包含一个级别?

r - 按多列聚合,对一列求和并保留其他列?根据聚合值创建新列?

r - 仅从 Rmd 文档中提取文本

r - 在另一个表的同一行的多列上过滤 df?

python - 为什么 scipy.ststs.contingency.expected_freq 返回的预期频率不是我所期望的?

r - 在R中的函数中使用dplyr,然后使用for循环来执行该函数

r - 为什么我会得到 "unused argument (na.action = NULL)"聚合错误?

r - 在表中查找超过第三个四分位数的频率