存储从R中的表函数返回的频率

时间:2018-03-08 19:11:54

标签: r

我有一个大小为5的向量,它存储随机数字0-9,这样就可以多次出现相同的数字。这是一个示例向量:

nums <- c(5,2,5,9,2)

如果我在这个向量上打印运行表函数的结果,我得到以下输出:

nums
2 5 9
2 2 1

我想知道从table(nums)返回的最高频率和第二高频率。如何存储从table函数的迭代返回的所有频率?

3 个答案:

答案 0 :(得分:1)

仅将表缩小到您想要的两个最常用的选项

sort(table(nums), dec = TRUE)[1:2]
# nums
# 2 5 
# 2 2

只是为了得到他们可以做的名字

names(sort(table(nums), dec = TRUE))[1:2]
# [1] "2" "5"

如果可能没有那么多唯一值,您可以使用na.omit,如

names(sort(table(nums), dec = TRUE))[1:4]
# [1] "2" "5" "9" NA
na.omit(names(sort(table(nums), dec = TRUE))[1:4])
# [1] "2" "5" "9"
# attr(,"na.action")
# [1] 4
# attr(,"class")
# [1] "omit"

至于存储结果,使用列表应该非常方便:

tabs <- list()
tabs[[1]] <- sort(table(nums), dec = TRUE)[1:2]
tabs[[2]] <- sort(table(c(1, 1, 2, 3, 3)), dec = TRUE)[1:2]
tabs
# [[1]]
# nums
# 2 5 
# 2 2 
#
# [[2]]
#
# 1 3 
# 2 2 

特别是,使用列表与选项数量不同的选项兼容。

答案 1 :(得分:1)

table返回一个可以保存到变量的数组。如果使用as.data.frame将其转换为data.frame,则可以更轻松地使用对象:

nums <- c(5,2,5,9,2)
tab <- as.data.frame(table(nums))
tab

  nums Freq
1    2    2
2    5    2
3    9    1

答案 2 :(得分:1)

你可以使用plyr,它的快速闪电。

library(plyr)
nums <- c(5,2,5,9,2)
count(nums)

<强>结果

 x   freq
 2    2
 5    2
 9    1