【发布时间】:2019-04-27 06:45:23
【问题描述】:
我有以下矩阵:
set.seed(3690)
example = matrix(sample(1:10, 100, replace = TRUE), nrow = 10)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 4 4 2 7 2 2 3 8 2 5
[2,] 7 3 2 6 6 5 7 8 1 3
[3,] 7 5 7 9 4 9 4 8 2 7
[4,] 5 3 4 2 1 5 9 10 9 5
[5,] 9 10 7 2 7 4 9 1 1 9
[6,] 2 3 5 1 2 8 1 5 9 4
[7,] 5 4 10 5 9 10 1 6 1 10
[8,] 6 3 9 7 1 1 9 2 1 7
[9,] 5 9 4 8 9 9 5 10 5 4
[10,] 10 1 4 7 3 2 3 5 4 5
如何在 R 中找到每列最频繁出现的 10(或顶部 5)元素?
这就是我在 Stata 中的编码方式:
tempvar freq
generate byte `freq'=1
sort serial t0400_0415_d1-t0345_0400_d7
collapse (count) `freq' serial, by(t0400_0415_d1-t0345_0400_d7)
list, sepby(`freq')
gsort -`freq' t0400_0415_d1-t0345_0400_d7
generate rank=_n
keep if rank<=20
drop `freq'
sort t0400_0415_d1-t0345_0400_d7
tempfile top20
save `"`top20'"'
sort rank t0400_0415_d1-t0345_0400_d7
list rank t0400_0415_d1-t0345_0400_d7
请注意,t0400_0415_d1 - t0345_0400_d7 是变量名。
【问题讨论】:
-
虽然这不是你的问题,但我注意到你的 Stata 代码没有定义一个最小的、完整的、可验证的示例。无论如何,使用
contract比使用collapse更直接。