0

我有一个数据框 df 并想使用 A 列中的数据对行进行分箱,然后对于每个箱,计算一个值出现在另一列 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 中符合这些条件的项目。谁能指出我正确的方向?

谢谢!

4

1 回答 1

0

第一的:

newdf<-na.omit(df)

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

第二:

用长度替换总和

with(newdf, length(newdf[A>=1 $ A < 2, "B"]))

于 2013-05-30T22:04:07.403 回答