8

Rの配列の上位n位を取得するにはどうすればよいですか?

私が持っているとしましょう

a <- c(67, 2, 100, 2, 100, 23, 2, 100, 67, 89,100)

どうすれば入手することができますか:

rank   number   times
1     100       4
2     2         3
3     67        2
4     23        1
4     89        1
4

6 に答える 6

10
tab <- table(a<-c(67, 2, 100, 2, 100, 23, 2, 100, 67, 89,100))
df <- as.data.frame(tab)
names(df) <- c("number","times")
df$rank <- rank(-df$times,ties.method="min")
df <- df[order(df$rank,decreasing = F),]
df
  number times rank
5    100     4    1
1      2     3    2
3     67     2    3
2     23     1    4
4     89     1    4
于 2012-08-14T10:24:27.730 に答える
7

tableで使用sort:

sort(table(a), decreasing=TRUE)
a
100   2  67  23  89 
  4   3   2   1   1 

結果をデータ フレームに変換する場合は、次のようにすべてラップするだけですdata.frame()

data.frame(count=sort(table(a), decreasing=TRUE))
    count
100     4
2       3
67      2
23      1
89      1
于 2012-08-14T10:25:03.130 に答える
3

次のようなものを試すことができます:

a <- c(67, 2, 100, 2, 100, 23, 2, 100, 67, 89,100)
DF <- as.data.frame(table(a))

DF[order(DF[,2], decreasing = TRUE), ]
    a Freq
5 100    4
1   2    3
3  67    2
2  23    1
4  89    1
于 2012-08-14T10:21:24.207 に答える
1

またはcountplyr パッケージから使用します。

require(plyr)
df = count(a)
df[order(df[["freq"]], decreasing = TRUE),] 
    x freq
5 100    4
1   2    3
3  67    2
2  23    1
4  89    1
于 2012-08-14T10:27:46.417 に答える
0

df[df>0] <- 1、後でrowSums(df)、最後with(df, df[order(-x, y, z), ]-xは頻度データの列、その他は ID 列、および補足情報を 使用できます。

于 2017-10-05T03:05:37.337 に答える