如何根据一列中的值对数据进行分区,并对R中另一列的出现次数求和?

时间:2013-05-30 21:36:07

标签: r

我有一个数据帧df并希望使用来自A列的数据来对行进行bin操作,然后对于每个bin,计算一个值出现在另一列B中的次数。这是一个仅使用2列的示例(尽管我的真实例子有很多列):

A   B
5.4 
4.6 36_8365
2.4 
3.6 
0.6 
8.9 83_7433
4   
7.6 
4.7 54_3874
1.5 54_8364

我想查看A列,找到小于1,大于1但小于2的所有值,依此类推,对于每个bin,我想计算一个值出现在B列的次数对于上表,这将得到以下结果:

Class   Number
<1  0
1<=A<2  1
2<=A<3  0
3<=A<4  0
4<=A<5  2
5<=A<6  0
6<=A<7  0
7<=A<8  0
8<=A<9  1
9<=A<10 0

以下是接近的,但它会将值相加而不是我只想计算它们:

with(df, sum(df[A >= 1 & A < 2, "B"]))

我不知道用什么来取代“和”来得到正数,而不是总和。我知道我可以使用

识别B列中的哪些行具有值
thing <- B==''

或使用

制作表格
thing_table <- table(B=='')

但是,我不确定如何搜索A列,测试该值是否介于2个其他值之间,然后计算B中符合这些条件的项目。有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

首先:

newdf&LT; -na.omit(DF)

这会将df缩小到仅包含数据的行。在尝试之前,确保空单元格显示为NA。

第二

将总和替换为长度

with(newdf,length(newdf [A&gt; = 1 $ A&lt; 2,“B”]))