转换tapply输出到数据帧中的R

问题描述:

我有一个tapply调用看起来像转换tapply输出到数据帧中的R

1  2  4 
678.2 19.3 716.2 

一些输出,我希望把它做成一个数据帧,看起来像

 key value 
1 1  678.2 
2 2  19.3 
3 4  716.2 

如何我可以这样做吗?

+0

提供dput()从该对象。我可以看到为什么这个问题被低估了,但你可以编辑它来澄清情况。 –

一些示例代码会很好,看看你在做什么。以微弱的回答你的问题,如果x是你tapply的结果,那么

data.frame(key=names(x), value=x) 

更广泛地说,看到?by?aggregate,并且还包plyr更普遍的数据扯皮的需求。

+0

这是不正确的。这给出了索引4的索引4,而不是3 – CodeGuy

+0

@CodeGuy:我不知道你的意思,但我假设你做了'as.numeric(key)'并且看到4被映射到3。如果你不想让'key'成为一个因素,那么'key = as.numeric(names(x))'。 –

+0

hm。不,不会做as.numeric。我的意思是,从我上面的问题,你可以看到,索引3有一个4的关键和一个值716.2 – CodeGuy

如果用集合替换tapply,它会自动作为data.frame出来。

aggregate(value ~ key, FUN = mean) 

其中值和密钥对应于tapply呼叫

tapply(value, key, mean)