在R中循环自动完成

时间:2015-05-12 16:06:43

标签: r

我正在尝试在R中为以下内容编写循环。我有一个数据帧df

Out = 

    'number1'
    'number4'

等等。我想得到一个数据帧,它计算小于或等于某个特定值的读取次数。实施例有3个读数,其中Counts <= 100和2个读数,计数<= 10。预期产出

Reads Counts
aaa     1
bbb     20
ccc     3

等等。现在我用

手动完成
Counts number_reads
100     3
10      2
1       1

等等。你可以建议一个编辑,我可以自动获得预期的输出,计数增加,如步骤10(100,90,80等)。感谢

2 个答案:

答案 0 :(得分:4)

在统计学中,X小于阈值的频率称为经验累积分布函数:简称ecdf。

在您的情况下,您需要向上扩展n以将频率转换为计数。

使用睡眠数据:

> nrow(sleep) * ecdf(sleep$extra)(5:-2)
[1] 19 17 14 14 10  6  2  0

表示有19个案例,其中额外少于5个,17个少于4个,依此类推。

在你的情况下,你可能有

nrow(df) * ecdf(df$Counts)(c(100,10,1))

答案 1 :(得分:3)

cut将值放入容器中。 table计算这些值。 cumsum将为您提供达到所需级别的累积总和。

> Counts <- c(1, 20, 3)
> cut(Counts, c(0, 10, 100)) ## Or, I guess, cut(Counts, c(0, 1, 10, 100)
[1] (0,10]   (10,100] (0,10]  
Levels: (0,10] (10,100]
> table(cut(Counts, c(0, 10, 100)))

  (0,10] (10,100] 
       2        1 
> cumsum(table(cut(Counts, c(0, 10, 100))))
  (0,10] (10,100] 
       2        3 

将第二个参数更改为cut以匹配您感兴趣的休息符。

cut相似的是findInterval