5

你们能帮助获得特定范围的“计数”吗?例如,我想知道分数从 0.5 到 1、1 到 1.5、2.0 到 2.5 等发生了多少次。我有一个示例数据。

  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 个 bin 间隔。我使用的代码是下面的代码

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

但是现在我想知道如何获取每个 15 个 bin 间隔的不同分数范围的计数我想要的分数范围是:每个 15 个 bin 间隔的分数范围为 0.5 到 1、1 到 1.5、2.0 到 2.5

谢谢大家...任何建议将不胜感激

4

4 回答 4

4

如果我理解您的问题,这是一个简单的解决方案:

table(cut(YOURDATA, breaks = seq.int(from = 0.5, to = 2.5, by = 0.5)))

于 2019-01-03T18:17:16.960 回答
2

这是一个使用 的解决方案,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
于 2013-06-25T13:52:27.333 回答
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

应该做的伎俩。

于 2013-06-25T13:23:39.433 回答
0

您可以像这样定义一个布尔向量:

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

并使用函数 sum() 计算它为 true 的次数:

nb0.5to1<-sum(a)

并为其他间隔做同样的事情。如果您不想每次都重复定义,则可以使用函数 seq()。

于 2013-06-25T13:19:08.793 回答