R有可能使用dcast获取table()的输出吗?

问题描述:

我有以下的数据帧:R有可能使用dcast获取table()的输出吗?

id<-c(1,2,3,4,1,1,2,3,4,4,2,2) 
period<-c("first","calib","valid","valid","calib","first","valid","valid","calib","first","calib","valid") 
df<-data.frame(id,period) 

period 
id calib first valid 
1  1  2  0 
2  2  0  2 
3  0  0  2 
4  1  1  1 

打字

table(df) 

结果是否有任何方式使用 'dcast' 得到相同的结果,并将其保存为一个新的数据框?

是的,有一种方法:

library(reshape2) 
dcast(df, id ~ period, length) 
Using period as value column: use value.var to override. 
    id calib first valid 
1 1  1  2  0 
2 2  2  0  2 
3 3  0  0  2 
4 4  1  1  1 

您也可以只输入dcast(df, id ~ period)length将被默认得选择。正如我所看到的,你试图在你的另一个question中找到这个。没有dcast的扩展解决方案看起来像这样:

df <- data.frame(unclass(table(df))) 
df$ID <- rownames(df) 
df 
    calib first valid ID 
1  1  2  0 1 
2  2  0  2 2 
3  0  0  2 3 
4  1  1  1 4