我在data.frame中有重复的点序列。我想用水平图绘制它们,并用作x,y的Z频率(例如x = 1的次数y = 2)。我怎样才能做到这一点?好吧,我很容易用SQL语法解释自己:
SELECT x, y, count(*) from data_frame GROUP BY x, y
:)
答案 0 :(得分:2)
这些通过变量定义的组来汇总数据框在R中非常常见。许多* pply函数都可以工作。这些天的标准回复是使用ddply
包中的plyr
:
ddply(data_frame,.(x,y),summarise,total = NROW(piece))
通常,您应该真正了解plyr
包以及所有基本*pply
函数。
但是如果你对SQL更熟悉,你可以考虑查看sqldf
包,它允许你直接用SQL做很多这类数据帧的操作。
答案 1 :(得分:1)
我不怀疑很多人使用plyr函数获得了良好的结果,但这确实是一个问题,可以使用tapply
,table
或ave
之一轻松回答根据对此结果的未说明的需求。 tapply
和table
都会生成列联表,这些列表实际上是矩阵或数组,因此非常容易访问。
with( data_frame, table( x , y ) )