2017-05-26 93 views
2

我有一個數據集(KL):查找相等的寬度的間隔和時間間隔意味着

Actual 
4096 
-1149 
13780 
744 
-461 
9660 
619 
3466 
0 
7675 
10446 
12452 
10813 
11637 
-1908 
0 
7441 
11981 
5389 
4717 

然後我申請classInt包具有相等寬度的間隔:

library(classInt) 

y = classIntervals(kl$Actual, 6, style = 'quantile') 

y 
style: quantile 
      [-1908,0)  [0,1651.333)  [1651.333,5053)  [5053,8998.333) 
       3     4     3     3 
[8998.333,11499.67) [11499.67,13780] 
       3     4 

然後,我必須存儲這些間隔以便與實際相匹配,即每個數字都在哪個區間內。例如:4096位於(1651.333,5053)之內。

然後,我想要在單獨的列即Interval_Mean中有間隔的意思。例如:(1651.333 + 5053)/ 2 = 3352.17。

現在我想新數據幀(納米)爲:

nm 
Actual Interval   Interval_Mean 
4096 1651.333,5053  3352.17 
-1149 -1908,0    -954.00 
13780 11499.67,13780  12639.84 
744  0,1651.333   825.67 
-461 -1908,0    -954.00 
9660 8998.333,11499.67 10249.00 
619  0,1651.333   825.67 
3466 1651.333,5053  3352.17 
0  0,1651.333   825.67 
7675 5053.00,8998.333  7025.67 
10446 8998.333,11499.67 10249.00 
12452 11499.67,13780  12639.84 
10813 8998.333,11499.67 10249.00 
11637 11499.67,13780  12639.84 
-1908  -1908,0   -954.00 
0   0,1651.333  825.67 
7441 5053.00,8998.333  7025.67 
11981 11499.67,13780  12639.84 
5389 5053.00,8998.333  7025.67 
4717 1651.333,5053  3352.17 

其中,間隔爲y的上述每個間隔與實際和Interval_Mean值對準是平均的O/P。

感謝您提供解決方案。

+0

你可以添加到你的答案你做了一些試驗。 – amonk

+0

給出'n'的最大計數的間隔數量就是'ceiling(長度(kl $ Actual)/ n)' –

回答

0

嘗試各種方法後,最終我得到了解決:

z = unique(y$brks) 

kl$interval = cut(kl$Actual, breaks = z, right = FALSE) 

kl$interval = gsub("\\[|\\)", "", kl$interval) 

intmean = within(kl, interval<-data.frame(do.call('rbind', strsplit(as.character(interval), ',', fixed=TRUE)))) 

intmean = intmean[,-1] 

str(intmean) 

intmean[sapply(intmean, is.factor)] <- lapply(intmean[sapply(intmean, is.factor)], function(x) as.numeric(as.character(x))) 

intmean$interval_mean = apply(intmean, 1,mean) 

nm = kl 

nm$Interval_Mean = intmean$interval_mean 

我們達成解決方案。謝謝!!