格式化以计算数据

时间:2013-11-28 16:47:25

标签: r reshape2

我有以下data.frame

df = data.frame(a = sample(c(rep(1,23),rep(2,22), rep(3,43), rep(4, 12))), 
                b = sample(c(rep(1,10),rep(2,10), rep(3,20), rep(4, 60))), 
                c = sample(c(rep(1,40),rep(2,5), rep(3,30), rep(4, 25))))

table(df)

我想在这些方面运行一个模型。以下模型:

MCMCglmm(fixed = MyCount ~ a+b , random = c, data=new.df)

我的问题与如何轻松地从dfnew.df (包含以正确方式表达的数据的data.frame)有关。或者如何从三个变量中首先表达4个变量,以获得其交互的计数变量。

固定的变量可能定义为MyCount = c(table(df))。但重新表达abc对我来说似乎相当复杂。

最简单的解决方案是什么?也许使用包reshape

谢谢!

1 个答案:

答案 0 :(得分:0)

as.data.frame.table将构建一个“Freq”列,我将其重命名为“MyCount”;

> new.df <- setNames( as.data.frame(table(df)), c(names(df), "MyCount"))
> str(new.df)
'data.frame':   64 obs. of  4 variables:
 $ a      : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ...
 $ b      : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 2 2 2 2 3 3 ...
 $ c      : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
 $ MyCount: int  1 2 0 0 1 0 2 2 0 3 ...
顺便说一下,没有名为“Reshape”的包。正确的大写是学习R的一部分。