回答:
おそらくテーブルはあなたが求めているものですか?
dummyData = rep(c(1,2, 2, 2), 25)
table(dummyData)
# dummyData
#  1  2 
# 25 75
## or another presentation of the same data
as.data.frame(table(dummyData))
#    dummyData Freq
#  1         1   25
#  2         2   75
              hist。tableよりもかなり遅いようですhist。なんでかしら。誰か確認できますか?
                    order()に、結果で使用してください。iex <- as.data.frame(table(dummyData)); x[order(x$Freq, decreasing = TRUE), ]
                    Chaseが示唆したように、table()関数は良い方法です。大きなデータセットを分析する場合、別の方法はデータテーブルパッケージで.N関数を使用することです。
によってデータテーブルパッケージをインストールしたことを確認してください
install.packages("data.table")
コード:
# Import the data.table package
library(data.table)
# Generate a data table object, which draws a number 10^7 times  
# from 1 to 10 with replacement
DT<-data.table(x=sample(1:10,1E7,TRUE))
# Count Frequency of each factor level
DT[,.N,by=x]
              一意の値の数を含む無次元の整数ベクトルを取得するには、を使用しますc()。
dummyData = rep(c(1, 2, 2, 2), 25) # Chase's reproducible data
c(table(dummyData)) # get un-dimensioned integer vector
 1  2 
25 75
str(c(table(dummyData)) ) # confirm structure
 Named int [1:2] 25 75
 - attr(*, "names")= chr [1:2] "1" "2"
これは、一意の値のカウントを別の関数にフィードする必要がある場合に役立ち、t(as.data.frame(table(dummyData))[,2]Chaseの回答へのコメントでの投稿よりも短く、より慣用的です。ここで私にこれを指摘してくれた Ricardo Saportaに感謝します。
これは私にとってはうまくいきます。ベクトルを取るv
length(summary(as.factor(v),maxsum=50000))
コメント:maxsumを一意の値の数をキャプチャするのに十分な大きさに設定します
またはmagrittrパッケージと一緒に
v %>% as.factor %>% summary(maxsum=50000) %>% length
固有の値の数を、値を含むデータフレームの追加の列(たとえば、サンプルサイズを表す列)として持つ必要がある場合、plyrは適切な方法を提供します。
data_frame <- data.frame(v = rep(c(1,2, 2, 2), 25))
library("plyr")
data_frame <- ddply(data_frame, .(v), transform, n = length(v))
              ddply(data_frame, .(v), count)。また、機能させるにはlibrary("plyr")呼び出しが必要であることを明示することも価値がありますddply。
                    transformの代わりにmutate使用している場合plyr。
                    data.frame(例:train.data)で一意に実行し、カウント(分類子の重みとして使用できる)も取得する場合は、以下を実行できます。
unique.count = function(train.data, all.numeric=FALSE) {                                                                                                                                                                                                 
  # first convert each row in the data.frame to a string                                                                                                                                                                              
  train.data.str = apply(train.data, 1, function(x) paste(x, collapse=','))                                                                                                                                                           
  # use table to index and count the strings                                                                                                                                                                                          
  train.data.str.t = table(train.data.str)                                                                                                                                                                                            
  # get the unique data string from the row.names                                                                                                                                                                                     
  train.data.str.uniq = row.names(train.data.str.t)                                                                                                                                                                                   
  weight = as.numeric(train.data.str.t)                                                                                                                                                                                               
  # convert the unique data string to data.frame
  if (all.numeric) {
    train.data.uniq = as.data.frame(t(apply(cbind(train.data.str.uniq), 1, 
      function(x) as.numeric(unlist(strsplit(x, split=","))))))                                                                                                    
  } else {
    train.data.uniq = as.data.frame(t(apply(cbind(train.data.str.uniq), 1, 
      function(x) unlist(strsplit(x, split=",")))))                                                                                                    
  }
  names(train.data.uniq) = names(train.data)                                                                                                                                                                                          
  list(data=train.data.uniq, weight=weight)                                                                                                                                                                                           
}  
              count_unique_words <-function(wlist) {
ucountlist = list()
unamelist = c()
for (i in wlist)
{
if (is.element(i, unamelist))
    ucountlist[[i]] <- ucountlist[[i]] +1
else
    {
    listlen <- length(ucountlist)
    ucountlist[[i]] <- 1
    unamelist <- c(unamelist, i)
    }
}
ucountlist
}
expt_counts <- count_unique_words(population)
for(i in names(expt_counts))
    cat(i, expt_counts[[i]], "\n")