2013-06-25 133 views
2

你們可以幫助獲得特定範圍的「計數」嗎?例如,我想知道0.5到1,1到1.5,2.0到2.5的分數發生了多少次等等。下面有一個示例數據。R編程 - 計算一定範圍的數字的出現

Times Scores 
    0 0.6 
    1.2 0.5 
    1.8 1.2 
    2.4 1.4 
    3 1.5 
    3.6 2 
    4.2 0.5 
    4.8 0.6 
    5.4 0.4 
    6 1 
    6.6 1.1 
    8 0.6 
    9.4 1.5 
    10.8 1.5 
    12.2 1.3 
    13.6 1.6 
    15 1.4 
    16.4 1.2 
    17.8 1.4 
    19.2 2.6 
    20.6 2 
    22 2.2 
    23.4 2.4 
    24.8 1.4 
    26.2 1.2 
    27.6 0.5 
    29 0.8 
    30.4 1.4 
    31.8 1.6 
    33.2 2.2 
    34.6 2.5 
    36 3.6 
    37.4 3.78 
    38.8 2.5 
    40.2 3.5 
    41.6 3.4 
    43 3.5 
    44.4 3.3 
    45.8 2.1 
    47.2 2.3 
    48.6 0.6 
    50 0.7 
    51.4 0.8 
    52.8 1.4 
    54.2 1.5 
    55.6 1.6 
    57 1.5 
    58.4 1.2 
    59.8 1.1 
    61.2 1.56 
    62.6 2.02 
    64 2.48 
    65.4 2.94 
    66.8 3.4 
    68.2 2.1 
    69.6 2.8 
    71 3.9 
    72.4 2.3 
    73.8 2.4 
    75.2 5.5 
    76.6 4.6 
    78 1.2 
    79.4 1.3 
    80.8 1.4 
    82.2 1.8 
    83.6 0.5 
    85 0.2 
    86.4 0.3 
    87.8 0.6 
    89.2 0.4 
    90.6 0.5 
    92 0.6 
    93.4 1.06 
    94.8 1.52 
    96.2 1.98 
    97.6 2.44 
    99 2.9 
    100.4 3.36 
    101.8 3.82 
    103.2 0.6 
    104.6 0.5 
    106 1.2 
    107.4 1.4 
    108.8 1.5 
    110.2 2 
    111.6 0.5 
    113 0.6 
    114.4 0.4 
    115.8 1 
    117.2 1.1 
    118.6 0.6 
    120 1.5 
    121.4 1.5 
    122.8 1.3 
    124.2 1.76 
    125.6 2.22 
    127 2.68 
    128.4 3.14 
    129.8 3.6 
    131.2 4.06 
    132.6 4.52 
    134 4.98 
    135.4 5.44 
    136.8 5.9 
    138.2 6.36 
    139.6 6.82 
    141 0.6 
    142.4 0.5 
    143.8 1.2 
    145.2 1.4 
    146.6 1.5 
    148 2 
    149.4 0.5 
    150.8 0.6 
    152.2 0.4 
    153.6 1 
    155 1.1 
    156.4 0.6 
    157.8 1.5 
    159.2 1.5 
    160.6 1.3 
    162 1.76 
    163.4 2.22 
    164.8 2.68 
    166.2 3.5 
    167.6 3.3 
    169 2.1 
    170.4 2.3 
    171.8 0.6 
    173.2 0.7 
    174.6 0.8 
    176 1.4 
    177.4 1.5 
    178.8 1.6 
    180.2 1.5 
    181.6 1.2 
    183 1.1 
    184.4 0.5 
    185.8 0.6 
    187.2 0.1 
    188.6 0.8 
    190 0.5 
    191.4 0.6 
    192.8 0.3 
    194.2 0.5 
    195.6 1.5 
    197 1.8 
    198.4 2 
    199.8 2.2 

我想將我的'Times'列分成15個區間,我可以做。我使用的代碼如下

Data = cut(Sampledata$Times, seq(0,200, by=15), right=FALSE) 
finaldata <- by(Sampledata, Data, FUN=I) 

的一個,但現在我想知道如何獲得不同的分數的計數範圍爲每15箱間隔 的評分範圍,我希望是:0.5至1,1至1.5,2.0至2.5,每次15倉間隔

感謝球員...任何建議將不勝感激

回答

1

這裏使用的一個解決方案,by正如您試過的那樣,但是我用一個自定義函數取代了標識函數。對於每個時間間隔,我使用cut將分數範圍劃分爲間隔,並使用tapply來計算每個分數間隔的長度。全部轉化爲矩陣使用rbind.

do.call(rbind,by(Sampledata, Data, FUN=function(x){ 
    tapply(x$Scores, 
     cut(x$Scores,c(0.5,1,1.5, 2.0 ,2.5)), 
      length) 
})) 

     (0.5,1] (1,1.5] (1.5,2] (2,2.5] 
[0,15)   4  7  2  NA 
[15,30)   1  5  1  2 
[30,45)  NA  1  1  3 
[45,60)   3  5  1  2 
[60,75)  NA  NA  1  5 
[75,90)   1  3  1  NA 
[90,105)  2  1  2  1 
[105,120)  3  4  1  NA 
[120,135)  NA  3  1  1 
[135,150)  1  3  1  NA 
[150,165)  3  4  1  1 
[165,180)  3  2  1  2 
[180,195)  3  3  NA  NA 
0

可以定義一個布爾矢量是這樣的:

a<-rep(F,length(Scores)) 
for (j in 1:length(Scores)) 
{ 
    if(0.5<Scores[j] && 1>=Scores[j]) 
a[j]<-T 
} 

和使用功能的總和()來計算的時候,這是真的:

nb0.5to1<-sum(a) 

而對於其他intervalls這樣做。如果您不想每次定義都重複,則可以使用seq()函數。

1

我真的不知道你想要什麼,它不是那麼容易閱讀你的數據與R但這個概念應該是:

假設data包含你的號碼和U是您的間隔的向量,則

set.seed(123); 
data <- rnorm(1e3); 
U <- c(0.5,1,1.5,2,2.5); 
counts <- numeric(length(U)-1); 
for(i in 1:length(counts)) { 
    counts[i] <- length(which(data>=U[i] & data<U[i+1])); 
} 

counts 
[1] 146 83 46 22 

應該這樣做。