查找R中数组中数字的频率
Finding the frequency of numbers in an array in R
我需要找到数字出现的频率 0:8。在 mxn 阶矩阵 A 的每一列中。
我该怎么做?
提前致谢
您可以使用 apply
和 MARGIN=2
来遍历列,对 0:8 (x %in% 0:8
) 的元素进行子集化,转换为 factor
levels
指定为 0:8
并使用 table
获取元素的频率。
apply(A, 2, function(x) table(factor(x[x %in% 0:8], levels=0:8)))
或者另一种选择是 melt
矩阵并使用 setDT
转换为 data.table
,子集 0:8 (J(0:8)
) 来自 "value" column 在设置 "value" column as key (setkey
) 之后,group by "Var2",将 "value" column 更改为 "factor" class 并使用 table
获取频率
library(data.table)
setkey(setDT(melt(A)), value)[J(0:8),
as.list(table(factor(value, levels=0:8))), by= Var2]
数据
set.seed(24)
A <- matrix(sample(0:15, 10*20, replace=TRUE), ncol=10)
我需要找到数字出现的频率 0:8。在 mxn 阶矩阵 A 的每一列中。
我该怎么做?
提前致谢
您可以使用 apply
和 MARGIN=2
来遍历列,对 0:8 (x %in% 0:8
) 的元素进行子集化,转换为 factor
levels
指定为 0:8
并使用 table
获取元素的频率。
apply(A, 2, function(x) table(factor(x[x %in% 0:8], levels=0:8)))
或者另一种选择是 melt
矩阵并使用 setDT
转换为 data.table
,子集 0:8 (J(0:8)
) 来自 "value" column 在设置 "value" column as key (setkey
) 之后,group by "Var2",将 "value" column 更改为 "factor" class 并使用 table
library(data.table)
setkey(setDT(melt(A)), value)[J(0:8),
as.list(table(factor(value, levels=0:8))), by= Var2]
数据
set.seed(24)
A <- matrix(sample(0:15, 10*20, replace=TRUE), ncol=10)