我有一个数据帧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中符合这些条件的项目。有人能指出我正确的方向吗?
谢谢!
答案 0 :(得分:0)
首先:
newdf&LT; -na.omit(DF)
这会将df缩小到仅包含数据的行。在尝试之前,确保空单元格显示为NA。
第二
将总和替换为长度
with(newdf,length(newdf [A&gt; = 1 $ A&lt; 2,“B”]))