在R中的矢量,如果我有一個數據喜歡:在R中查找大多數矢量的好方法?
1 1 2 1 1 3 3 1 1
在這種情況下,1
是多數。
當然,我可以循環訪問列表並手動計數,但是在R中有沒有更好的方法來找到向量中的主要值?
在R中的矢量,如果我有一個數據喜歡:在R中查找大多數矢量的好方法?
1 1 2 1 1 3 3 1 1
在這種情況下,1
是多數。
當然,我可以循環訪問列表並手動計數,但是在R中有沒有更好的方法來找到向量中的主要值?
您可以使用table
x <- c(1,1,2,1,1,3,3,1,1)
which.max(table(x))
# 1
# 1
也許,這樣的事情會更有幫助。
names(which.max(table(x)))
# "1"
另一種選擇是使用count
功能從plyr
包
library(plyr)
df <- count(x)
df[which.max(df$freq),1]
# [1] 1
是要問關於計數... –
我不認爲你的解決方案與'x [which.max(table(x) )]'的作品。嘗試'x < - c(5,5,2,5,5,3,3,5,5)'。 – RHertel
@RHertel對。如何使用'names'?查看更新。 –
我們可以加快使用Rcpp
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
std::map<double, int> tableC(NumericVector x) {
std::map<double, int> counts;
int n = x.size();
for (int i = 0; i < n; i++) {
counts[x[i]]++;
}
return counts;
}
然後table
功能,我們source
文件,
library(Rcpp)
sourceCpp('Table.cpp')
x <- c(1,1,2,1,1,3,3,1,1)
tableC(x)
#1 2 3
#6 1 2
which.max(tableC(x))
#1
#1
我們可以嘗試
as.numeric(names(which.max(table(x))))
例子:
x <- c(5,5,2,5,5,3,3,5,5)
#> as.numeric(names(which.max(table(x))))
#[1] 5
說明:
的which.max(table(x))
結果是一個名爲整數,在這種情況下是
#> which.max(table(x))
#5
#3
這裏的值是3,名稱是「5」。該輸出提供最頻繁輸入的信息,即矢量中包含的第三個唯一編號,按升序計數(這裏的編號爲2,3和5),並且它具有「名稱」5。在由數字組成的矢量的情況下,這個數字的命名可能看起來很奇怪,但矢量也可以包含單詞,如「紅色」,「藍色」,「綠色」,然後知道最頻繁的單詞的名稱肯定會有用的。
我們只對名稱感興趣,我們可以使用函數names()
來提取該名稱。結果是一個字符,在我們的例子中可以使用as.numeric()
強制爲一個整數。
可能的重複:http://stackoverflow.com/q/2547402/903061 – Gregor