将列添加到表格

时间:2014-11-07 11:20:47

标签: r tabular

是否可以将向量作为列添加到由tabular {tables}创建的表对象中?例如,下表

df = data.frame(group = factor(rep(c('A', 'B'), each=9)), condition=factor(rep(c('low', 'medium', 'high'), 6)), x=rnorm(18))
library('tables')
tabular(x * group ~ condition * mean, df)

       high      low      medium
   A   1.0818    0.7925   0.3255
   B   0.1312   -0.5851   0.3376

现在说我要添加一个新列,其中一些值是根据构成整行的数据计算出来的,即F统计量:

library('plyr')
fstatistic = ddply(df, .(group), function(df.sub) summary.lm(aov(x ~ condition, df.sub))$fstatistic['value'])

  group     value
1     A 5.7021984
2     B 0.6701893

我想将此作为列“F”添加到此表的最右侧。我怎样才能做到这一点?要明确,结果应该是:

       high      low      medium   F
   A   1.0818    0.7925   0.3255   5.7021984
   B   0.1312   -0.5851   0.3376   0.6701893

甚至更好:F是从表格中的行计算出来的。有没有办法以一种方式指定一个tabular公式,这使得这个表一气呵成?

1 个答案:

答案 0 :(得分:1)

我认为没有一种很好的方法来为表格定义函数。表格中的函数操作单个数据向量,而不是整个表,因此您的lm.fit将无法工作。而只是做

tblr <- tabular(x * group ~ condition * mean, df)
tblr <- as.matrix(tblr, rowLabels=FALSE, colLabels=FALSE)
f.statistic <- ddply(df, .(group), function(df.sub) summary.lm(
      aov(x ~ condition, df.sub))$fstatistic['value'])
cbind(tblr, f.statistic)