绘制因子变量的频率

时间:2014-05-15 03:29:48

标签: r apply reshape

我正在尝试处理所有用于操作数据结构的各种工具 - 我已经研究过apply,sapply,tapply,reshape等等。我仍然不确定在每种情况下使用哪种工具

对于我目前的问题,我的数据如下:

ID    T1Measure    T2Measure    ...
1     1            1
2     1            2
...

其中T1Measure表示时间1处因子/分类变量的度量,T1Measure是同一用户在时间2等的相同变量的度量。

我的目标是生成该度量分布随时间变化的图表(每个因子的频率和每个因子的比例)。

我知道这很简单,但我很难绕过如何得到我想要的东西。

我相信对于ggplot,我想要的是:

FactorID     variable     value
1             T1           2
2             T1           0
1             T2           1
2             T2           1
...

我想知道我应该考虑使用哪个软件包,但更一般地说,这是一种思考数据结构的好方法,以及如何识别操作它们的最佳方法。

1 个答案:

答案 0 :(得分:2)

我不确定我会在这里使用任何apply语句,但reshape2包会有帮助。

#sample data
dd<-data.frame(
    ID=c(1,2,3,4,5,6),
    T1=c(1,2,2,1,1,2),
    T2=c(1,1,2,1,1,2),
    T3=c(2,1,1,2,1,1)
)

library(reshape2)
mm<-melt(dd,id.vars="ID", variable.name="Measure", value.name="FactorID")

#option 1 (useful for counts of discrete values)
as.data.frame(with(mm, table(FactorID, Measure))

#option 2 (useful for collapsing data)
aggregate(ID~FactorID+Measure, mm, FUN=length)

我使用标准基本功能来折叠数据并进行计数。我倾向于将reshape2的语法转换为基础reshape()函数,但也可以使用。