快速的問題。我正在用一些不同的方式對變量進行探索性數據分析。假設我在data.frame df
中有一個名爲var
的變量。根據設定的觀察次數分箱變量
df$var<-c(1,2,8,9,4,5,6,3,6,9,3,4,5,6,7,8,9,2,3,4,6,1,2,3,7,8,9,0)
到目前爲止,我已經採用以下方法(下面的代碼):
#Divide into quartiles
df$var_quartile <- with(df, cut(var, breaks=quantile(var, probs=seq(0,1, by=.25)), include.lowest=TRUE))
# Values of var_quartile
> [0,3],[0,3],(7.25,9],(7.25,9],(3,5],(3,5],(5,7.25],[0,3],(5,7.25],(7.25,9],[0,3],(3,5],(3,5],(5,7.25],(5,7.25],(7.25,9],(7.25,9],[0,3],[0,3],(3,5],(5,7.25],[0,3],[0,3],[0,3]
#Bin into increments of 2
df$var_bin<- cut(df[['var']],2, include.lowest=TRUE, labels=1:2)
# Values of var_bin
> 1 1 2 2 1 2 2 1 2 2 1 1 2 2 2 2 2 1 1 1 2 1 1 1 2 2 2 1
,我想做的最後一件事是斌的可變進後的10個觀察部分已按照時間順序排序。在找到中位數後,這是一種相同的分裂方法(數到中間觀察值),只有我想以10個觀察增量計數。
使用我的例子,這將拆分var
分爲以下幾個部分:
0,1,1,2,2,2,3,3,3,3
4,4,4,5,5,6,6,6,6,7
7,8,8,8,9,9,9
注: - 我需要在非常大的數據集中運行這個操作(通常是3-6百萬個廣泛的觀察)。
我該怎麼做?謝謝!
請提供可再生的數據。 – Arun 2013-03-07 15:14:38
@roody我想你會在'plyr'包中找到很多這樣的工作實用程序。你可以使用函數'ddply'和'mutate'函數爲你的bin idex創建不同的新列。您也可以使用'zoo'包中的滾動函數將觀察值分組爲10。 – Dinre 2013-03-07 15:19:41
如果數據如下所示,那麼期望的結果是:var < - c(rep(1,11),rep(2,3) ,rep(3,9),rep(4,20))'甚至是'sample(1:10,100,repl = TRUE)',因爲我確信這些值中會有一些值更大比10更好。 – 2013-03-07 15:27:25