【发布时间】:2016-01-12 20:49:35
【问题描述】:
我有一个名为“test”的数据集(data.frame),有 52 个列(预测变量),分别命名为 T1、T2、T3、T4、T5、T6、......T50。
我想提取每列的频率表。
我知道它有一个名为“freq”的函数。
那么,如何在没有手动 52 次编码的情况下获得 50 个频率表。
如果您有任何想法,请发表评论。谢谢你。
【问题讨论】:
标签: r statistics frequency
我有一个名为“test”的数据集(data.frame),有 52 个列(预测变量),分别命名为 T1、T2、T3、T4、T5、T6、......T50。
我想提取每列的频率表。
我知道它有一个名为“freq”的函数。
那么,如何在没有手动 52 次编码的情况下获得 50 个频率表。
如果您有任何想法,请发表评论。谢谢你。
【问题讨论】:
标签: r statistics frequency
我们可以循环使用lapply 并应用table 来获取每列的频率计数
lapply(test, table)
我们还可以将列转换为factor,将levels指定为数据集中的unique元素,然后应用table,这样list元素就可以是rbind来创建一个data.frame 或 matrix(通过不删除未使用的级别来保持 list 元素的 length 相同)
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))) )
【讨论】: