是否可以将向量作为列添加到由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
公式,这使得这个表一气呵成?
答案 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)