10

私は配列を持っています

a <- c(1,1,1,1,1,2,3,4,5,5,5,5,5,6,7,7,7,7)

配列内で最も頻繁に使用される番号を教えてくれるコマンドを使用したいと思いますか?

これには簡単なコマンドがありますか?

4

4 に答える 4

28

関数はこれtable()で十分であり、データに複数のモードがある場合に特に役立ちます。

table()およびに関連する次のオプションを検討してくださいmax()


# Your vector
a = c(1,1,1,1,1,2,3,4,5,5,5,5,5,6,7,7,7,7)

# Basic frequency table
table(a)
# a
# 1 2 3 4 5 6 7 
# 5 1 1 1 5 1 4 

# Only gives me the value for highest frequency
# Doesn't tell me which number that is though
max(table(a))
# [1] 5

# Gives me a logical vector, which might be useful
# but not what you're asking for in this question
table(a) == max(table(a))
# a
#    1     2     3     4     5     6     7 
# TRUE FALSE FALSE FALSE  TRUE FALSE FALSE 

# This is probably more like what you're looking for
which(table(a) == max(table(a)))
# 1 5 
# 1 5 

# Or, maybe this
names(which(table(a) == max(table(a))))
# [1] "1" "5"

コメントに示されているように、場合によっては、最も一般的に発生する 2 つまたは 3 つの値を確認したい場合があります。その場合sort()は便利です。

sort(table(a))
# a
# 2 3 4 6 7 1 5 
# 1 1 1 1 4 5 5 

テーブルに返す値のしきい値を設定することもできます。たとえば、2 回以上発生した数値のみを返したい場合は、次のようにします。

sort(table(a)[table(a) > 1])
# a
# 7 1 5 
# 4 5 5 
于 2012-12-12T14:17:57.647 に答える
5

使用table()機能:

## Your vector:
a <- c(1,1,1,1,1,2,3,4,5,5,5,5,5,6,7,7,7,7)

## Frequency table
> counts <- table(a)

## The most frequent and its value
> counts[which.max(counts)]
# 1
# 5

## Or simply the most frequent
> names(counts)[which.max(counts)]
# [1] "1"
于 2014-11-05T22:45:00.727 に答える
2

モードを見つけるための個人的なコードをいくつか書きました(数年前。アナンダが示したように、それはかなり明白なものです):

smode<-function(x){
    xtab<-table(x)
    modes<-xtab[max(xtab)==xtab]
    mag<-as.numeric(modes[1]) #in case mult. modes, this is safer
    #themodes<-names(modes)
    themodes<-as.numeric(names(modes))
    mout<-list(themodes=themodes,modeval=mag)
    return(mout)
    }

何とか著作権を何とか何とか使用してくださいが、それでお金を稼ぐことはありません。

于 2012-12-12T16:21:42.503 に答える
0

必要なのはデータのモードです。データを計算するためのさまざまなオプションがあります。最頻値のパッケージには、最頻値を推定するための一連の関数がありますが、必要なものには行き過ぎかもしれません。

参照:

モードを見つけるための組み込み関数はありますか?

Rで条件モードを計算する方法は?

お役に立てば幸い

于 2012-12-12T14:13:55.310 に答える