我有以下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)
我的问题与如何轻松地从df
到new.df
(包含以正确方式表达的数据的data.frame)有关。或者如何从三个变量中首先表达4个变量,以获得其交互的计数变量。
固定的变量可能定义为MyCount = c(table(df))
。但重新表达a
,b
和c
对我来说似乎相当复杂。
最简单的解决方案是什么?也许使用包reshape
?
谢谢!
答案 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的一部分。