首页 > 解决方案 > 如何创建一个新列,对 R 中现有列中的变量进行分组?

问题描述

我有一个数据集,其中包含研究站点上的一列数据(X1_What_site_are_you)。有8个因素。我想创建一个新列,按它们的栖息地类型对这些因素进行分组,其中 4 个因素代表林地(Mann's Copse 1、Mann's Copse 2、Nash's Copse 1、Nash's Copse 2)和 4 个代表田地的因素(Nash's Field 1、Nash's场 2,苗圃场 1,苗圃场 2)。

下面是数据结构:

'data.frame':   560 obs. of  16 variables:
 $ title                            : chr  "Mann's Copse 1 18/02/2021" "Mann's Copse 1 18/02/2021" "Mann's Copse 1 18/02/2021" "Mann's Copse 1 18/02/2021" ...
 $ X1_What_site_are_you_            : Factor w/ 8 levels "Mann's Copse 1",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ lat_2_What_are_the_GPS_c         : num  51.4 51.4 51.4 51.4 51.4 ...
 $ long_2_What_are_the_GPS_c        : num  -0.653 -0.653 -0.653 -0.653 -0.653 ...
 $ accuracy_2_What_are_the_GPS_c    : int  27 27 27 27 27 6 6 6 6 6 ...
 $ UTM_Northing_2_What_are_the_GPS_c: int  5698309 5698309 5698309 5698309 5698309 5698310 5698310 5698310 5698310 5698310 ...
 $ UTM_Easting_2_What_are_the_GPS_c : int  663238 663238 663238 663238 663238 663239 663239 663239 663239 663239 ...
 $ UTM_Zone_2_What_are_the_GPS_c    : chr  "30U" "30U" "30U" "30U" ...
 $ X3_What_date_is_it               : chr  "18/02/2021" "18/02/2021" "18/02/2021" "18/02/2021" ...
 $ X4_What_time_is_it               : chr  "17:15:02" "17:15:02" "17:15:02" "17:15:02" ...
 $ X5_What_are_your_init            : chr  "JAJ" "JAJ" "JAJ" "JAJ" ...
 $ Count                            : int  1 2 3 4 5 1 2 3 4 5 ...
 $ robinalarm                       : int  0 0 0 0 0 0 0 0 1 0 ...
 $ robincall                        : int  0 0 1 0 0 0 1 4 4 3 ...
 $ robinsound                       : int  0 0 1 0 0 0 1 4 5 3 ...
 $ birdsight                        : int  24 0 0 0 0 24 0 1 0 0 ...

标签: r

解决方案


备查:

 ##CREATE HABITAT COLUMN  
birds["Habitat"] <- rep(0, 560)
     # Run a for loop 
for (i in 1:nrow(birds)){
  if (str_detect(birds[i, 2], "Copse") == "TRUE"){
    birds[i, 17] <- "Forest". 
  }
  else {
    birds[i, 17] <- "Grassland"
  }
}
  • 在此示例中,将 rep 设置为数据集中的列数(例如rep(0,x)
  • 其中str_detect(birds[i,2],2 表示因子所在的列号
  • 其中birds[i,17]17 表示输入新分组变量的新列

推荐阅读