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
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
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
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
次のようなものを試すことができます:
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
またはcount
plyr パッケージから使用します。
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
df[df>0] <- 1
、後でrowSums(df)
、最後with(df, df[order(-x, y, z), ]
に-x
は頻度データの列、その他は ID 列、および補足情報を 使用できます。