我有一个大小为5的向量,它存储随机数字0-9,这样就可以多次出现相同的数字。这是一个示例向量:
nums <- c(5,2,5,9,2)
如果我在这个向量上打印运行表函数的结果,我得到以下输出:
nums
2 5 9
2 2 1
我想知道从table(nums)
返回的最高频率和第二高频率。如何存储从table
函数的迭代返回的所有频率?
答案 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