2011-08-23 75 views
9

我不理解R中的所有術語。我只有100個關卡統計信息,試圖瞭解更多信息。CRAN中的百分位數函數在哪裏?R

我在猜測R有一個內置的百分點函數,名爲我不認識或知道如何搜索的東西。

我可以寫我自己的,而是使用內置的一個顯而易見的原因。

這裏是一個我寫道:

percentile <- function(x) return((x - min(x))/(max(x) - min(x)) 
+2

如果你想成爲一個通用的效用函數,可以考慮添加'na.rm = TRUE'你'min'和'max'電話本,這樣的功能工作時,理智有' NA中的數據 –

+2

百分位數(或R中的「分位數」)實際上與您在問題中描述的內容有所不同。您正在描述縮放問題。在這四個答案中,只有@BenBolker的回答可以回答你的問題。 – Andrie

回答

7

如果你正在尋找,找出從數據組特定的百分位數,看看在quantile功能:?quantile。乘以100,就可以得到百分位數。

如果您正在考慮將數字轉換爲百分位數,請查看rank,但您需要確定如何解決關係。您可以簡單地通過除以矢量的長度從等級重新縮放到分位數。

+0

在我問我的問題之前,我嘗試了分位數函數。這不是我想要的。你的建議,看看排名功能是非常有幫助的。因爲我可以做rank(x)/ length(x),它給出了和我的百分位數函數相同的結果。整齊! – freewary

+3

@freewary我很高興你找到了描述你問題的簡短方式。但要非常小心。 'rank(x)/ length(x)'可能會給出與原始問題相同的結果,但這些將是例外情況,並且根據您的數據您的結果會有所不同。 – Andrie

+1

@Andrie是正確的 - 確實需要照顧。排名與分位數一樣細微。如果有關係或新手,可能會有一些驚喜。 – Iterator

8

您可以通過

scale(x,center=min(x,na.rm=TRUE),scale=diff(range(x,na.rm=TRUE))) 

做到這一點,但我不知道居然有一個內置的功能,你問,它的縮放。

+0

+1爲了實現OP不問百分點,但縮放。 – Andrie

+0

這就是爲什麼我開始喜歡R的原因。這不是我正在尋找的東西,但它說明了R鼓勵處理任何問題的方法很多。 – freewary

2

您可以搜索功能(或其它任何東西),通過RSiteSearch例如,

RSiteSearch("percentile") 
+0

感謝您向我展示搜索R幫助的新方法。 – freewary

0

在你正在考慮基於一個分佈的百分關的機會,這裏是一個不同的答案。每個概率分佈都有一組與其相關的4個函數:密度,分佈,分位數和生成函數。這些分別是d-,p-,q-和r-的前綴(具有基於分佈的相同後綴)。你有一個統一的分佈,並詢問有關百分點(分佈),所以你想punif。作爲它的兩個參數,需要minmax

+0

> punif(women $ height,1,length(women $ height)) [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 不知道如何使這項工作。請提供更多提示。 – freewary

+2

要做到這一點,我想你會想'punif(女士$高度,分鐘(女士$身高),最大(女士$高度))'(或'與(女士,punif(高度,分鐘(高度),最高)))' –

0

我做了這個功能函數,檢查一下。數據是任何矢量,任何矩陣或數據框的行。

percentiles<-function(Data) return(quantile(Data, seq(0,1, by=.01)))