我有一个名为'test'的数据集(data.frame),有52列(预测变量)名为T1,T2,T3,T4,T5,T6,....... T50。
我想提取每列的频率表。
我知道有一个名为'freq'的函数。
然后,如何在没有手动52次编码的情况下获得50个频率表。
如果你有任何想法,请评论它。谢谢。
答案 0 :(得分:2)
我们可以使用lapply
遍历列并应用table
来获取每列的频率计数
lapply(test, table)
我们还可以将列转换为factor
,并将levels
指定为数据集中的unique
元素,然后应用table
以便list
元素可以rbind
来创建data.frame
或matrix
(通过不丢弃未使用的级别来保持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))) )