使用R重复编码获取许多列的“频率表”

时间:2016-01-12 12:40:39

标签: r statistics frequency

我有一个名为'test'的数据集(data.frame),有52列(预测变量)名为T1,T2,T3,T4,T5,T6,....... T50。

我想提取每列的频率表。

我知道有一个名为'freq'的函数。

然后,如何在没有手动52次编码的情况下获得50个频率表。

如果你有任何想法,请评论它。谢谢。

1 个答案:

答案 0 :(得分:2)

我们可以使用lapply遍历列并应用table来获取每列的频率计数

lapply(test, table)

我们还可以将列转换为factor,并将levels指定为数据集中的unique元素,然后应用table以便list元素可以rbind来创建data.framematrix(通过不丢弃未使用的级别来保持length元素的list相同

Un1 <- sort(unique(unlist(test)))
do.call(rbind, lapply(test, function(x) table(factor(x, levels=Un1))))

或另一个选项是mtabulate

library(qdapTools)
mtabulate(test)

数据

set.seed(24)
test <- as.data.frame(matrix(sample(1:8, 8*50, replace=TRUE),
   ncol=50, dimnames=list(NULL, paste0("T", 1:50))) )