我正在尝试在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等)。感谢
答案 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
。