首页 > 解决方案 > 尝试注意一列中的值是否等于每行下一列中的值

问题描述

我对 R 相当陌生,并试图计算鱼移动的数量,以便我可以按月进行卡方检验。

每行是一条鱼,每列是一个月,如果在给定月份检测到鱼,则其值为检测到的位置,如果在该月未检测到,则值为 0。如果检测到在多个位置中,该值的两个位置都按当月检测到的顺序排列。

Tag_ID    Region.Init 2017-05-01  2017-06-01 2017-07-01 2017-08-01 2017-09-01

1 326000       Lower          0        Upper         0          0       Misc       
2 326001       Lower          0 Lower, Misc       Misc          0          0          
3 326002       Lower          0       Lower          0          0          0  

我试图记录鱼到达新地点的月份。是否将发生这种情况的月份放入新列中,或者以某种方式在数据中注明,都无关紧要。所以,我尝试做一个嵌套循环,它遍历每一行,如果列等于下一个,它将第二个值更改为 1,但是这改变了下一个循环,因为值现在不同。我也遇到了 R 的问题,认为当值变为 0(也就是未检测到)时,它是一个运动,这不是我想要的。我遇到的另一个问题是当有多个位置(例如,Lower,Misc)并且下个月是其中的第二个(Misc)时,当鱼实际上留在 Misc 时,它会将两者之间的跳跃计为移动。

理想情况下,我希望数据集看起来像这样:

Tag_ID    Region.Init 2017-05-01  2017-06-01 2017-07-01 2017-08-01 2017-09-01 Moves

1 326000    Lower        0          Upper          0          0       Misc     2017-06-01, 2017-09-01  
2 326001    Lower        0    Lower, Misc       Misc          0          0      2017-06-01    
3 326002    Lower        0          Lower          0          0          0        NA

标签: rloopsnested-loops

解决方案


推荐阅读