根据R中的列值计算行数

时间:2015-05-12 17:55:24

标签: r

我有一个数据帧df

 Reads   Counts
 aaaa     10
 bbbb     20
 cccc     25

等等。

我想计算超过某个计数值的读数,并绘制出来。示例我想要一个看起来像

的数据框
 Counts>=       #reads with Counts>= 
  1              3
  2              3
  3              3
  11             2
  20             2
  21             1

等等。你能否建议我如何获得这样的数据框并绘制它。

2 个答案:

答案 0 :(得分:2)

考虑到你想要绘制的等级......

cutoffs <- 1:30

......你可以这样做:

data.frame(cutoff=cutoffs, num.above=Reduce("+", lapply(dat$Counts, ">=", cutoffs)))
#    cutoff num.above
# 1       1         3
# 2       2         3
# 3       3         3
# 4       4         3
# 5       5         3
# 6       6         3
# 7       7         3
# 8       8         3
# 9       9         3
# 10     10         3
# 11     11         2
# 12     12         2
# 13     13         2
# 14     14         2
# 15     15         2
# 16     16         2
# 17     17         2
# 18     18         2
# 19     19         2
# 20     20         2
# 21     21         1
# 22     22         1
# 23     23         1
# 24     24         1
# 25     25         1
# 26     26         0
# 27     27         0
# 28     28         0
# 29     29         0
# 30     30         0

基本上,对于原始数据框中的每个值,您计算一个向量是否大于或等于每个截止值(使用带有lapply的{​​{1}})。然后将它们添加(使用>= Reduce),使总数大于或等于每个截止值。

答案 1 :(得分:1)

另一种选择是使用outer/colSums

 cutoff <- 1:30 
 data.frame(cutoff=cutoffs, num.above=colSums(outer(df$Counts, cutoffs, ">=")))