创建一个 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
不建议将某些值更改为空白 ""
,因为它可能会导致其他步骤出现问题
我想使用 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
不建议将某些值更改为空白 ""
,因为它可能会导致其他步骤出现问题