這裏的真正目標是在Python中查找分位數的手段(或總和或中位數等)。由於我不是Python的強大用戶,但已經使用R一段時間,我選擇的路線是通過Rpy。但是,我遇到了這樣的問題,即返回的手段清單並不對應分位數的順序。特別是,我有以下在R:通過Rpy分類的分位數平均值
> a = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
> b = c(2, 4, 20, 40, 200, 400, 2000, 4000, 20000, 40000)
> prob = seq(0,5)/5
> br = quantile(a,prob)
> rcut = cut(a, br, include.lowest = TRUE)
> quintile_means = tapply(b, rcut, mean)
> quintile_means
[1,2.8] (2.8,4.6] (4.6,6.4] (6.4,8.2] (8.2,10]
3 30 300 3000 30000
這是非常好的。但是,如果我的代碼翻譯成RPY,我
>>> import rpy
>>> from rpy import r
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> b = [2, 4, 20, 40, 200, 400, 2000, 4000, 20000, 40000]
>>> prob = [ x/5.0 for x in range(6)]
>>> br = r.quantile(a, prob)
>>> rcut = r.cut(a, br, include_lowest=r.TRUE)
>>> quintile_means = r.tapply(b, rcut, r.mean)
>>> print quintile_means
[30.0, 300.0, 3000.0, 30000.0, 3.0]
注意最後名單是錯誤排序(我們知道,因爲a
和b
都在這種情況下訂購)。一般來說,我無法從Rpy中的最低到最高分位數恢復正確的順序。有什麼建議麼?如果你可以建議一種直接在python中執行分析的方法,那也將是非常棒的。 (我沒有安裝numpy或scipy。)Thx!
編輯:爲了澄清,a
和b
被配對但不一定下令。例如,a
是眼睛的大小,而b
是鼻子的大小。我試圖找出在a
的各個分位數中,記者b
的含義是什麼。謝謝。
工程就像一個魅力。謝謝。 – Zhang18 2010-08-20 15:10:33