R 使用特定参数重新分类数据列

R 使用特定参数重新分类数据列,r,for-loop,indexing,R,For Loop,Indexing,我有一个树列表,其中列出了每棵树的直径(以及许多其他变量)。我正试图简化添加一个新列的过程,该列根据每棵树的直径给出一个直径类,我认为可以通过索引和/或for循环来完成,但我对这两种技能都不擅长。直径范围为0-80厘米。我想把它们分为2-cm类,其中0-0.9之间的树是“0”类,1.0-2.9是“2”类,3-4.9是“4”类,一直到80 cm。以下是我的数据的一个小快照: Unit Plot Treatment Year Species2 DBHmet 2

我有一个树列表,其中列出了每棵树的直径(以及许多其他变量)。我正试图简化添加一个新列的过程,该列根据每棵树的直径给出一个直径类,我认为可以通过索引和/或for循环来完成,但我对这两种技能都不擅长。直径范围为0-80厘米。我想把它们分为2-cm类,其中0-0.9之间的树是“0”类,1.0-2.9是“2”类,3-4.9是“4”类,一直到80 cm。以下是我的数据的一个小快照:

     Unit Plot Treatment           Year Species2 DBHmet
2     1    1        WB Post-treatment     PIPO 42.164
3     1    1        WB Post-treatment     PIPO 24.384
4     1    1        WB Post-treatment     PIPO 16.764
5     1    1        WB Post-treatment     PIPO 23.114
6     1    1        WB Post-treatment     PIPO 41.148
7     1    1        WB Post-treatment     PIPO  4.826
8     1    1        WB Post-treatment     PIPO 17.780
10    1    1        WB    Pre-harvest     PIPO 11.176
11    1    1        WB    Pre-harvest     PIPO 42.164
12    1    1        WB    Pre-harvest     PIPO  3.302
13    1    1        WB    Pre-harvest     PIPO 12.192

如何快速添加一列,将“DBHmet”放入2cm类中,如上所述?

从快照中,我假设您有一个数据帧/表,而不是列表。 假设如此,以下将DBHmet值更改为所需的2 cm类:

> data <- data.frame(DBHmet = c(0.0, 0.9, 1.0, 2.9, 3.0, 4.9, 80.0),
+                    otherVar = rep("a", 7))
> data$DBHmet_2cm <- floor(((data$DBHmet + 1)/2))*2
> data
  DBHmet otherVar DBHmet_2cm
1    0.0        a          0
2    0.9        a          0
3    1.0        a          2
4    2.9        a          2
5    3.0        a          4
6    4.9        a          4
7   80.0        a         80
>数据数据$DBHmet_2cm数据
DBHmet otherVar DBHmet_2cm
10.0 a 0
20.9 a 0
3 1.0 a 2
4.2.9 a 2
5.3.0 a 4
6.4.9 a 4
780.0 a 80

如果您提供了一个示例输入数据和该数据所需的输出,那么就更容易为您提供帮助。通过这种方式,可能的解决方案可以很容易地测试和验证。感谢您的推动。我希望我上面添加的内容能有所帮助。谢谢,这正是我所需要的!我以前不熟悉楼层功能,我将与同事分享!非常感谢。