You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中将字符型站点数据按规则分组编码为数值型

站点编码解决方案

Base R 实现方法

  1. 先创建命名映射向量,把每个站点对应到目标编码:
# 替换占位符为实际站点名称
site_map <- c(
  "NDUFR" = 1,
  "UMNP-HQ" = 2,
  "UMNP-campsite3" = 3,
  "UMNP-hondohondoa" = 4,
  "站点4_2" = 4, # 第4组第2个站点
  "站点4_3" = 4, # 第4组第3个站点
  "站点4_4" = 4, # 第4组第4个站点
  "站点4_5" = 4, # 第4组第5个站点
  "MamaGoti" = 5,
  "UMNP-Sanje1" = 6,
  "站点6_2" = 6, # 第6组第2个站点
  "站点6_3" = 6, # 第6组第3个站点
  "Magombera1" = 7,
  "站点7_2" = 7, # 第7组第2个站点
  "Sonjo" = 8,
  "SonjoRoad" = 8
)
  1. 直接通过向量索引完成编码,同时保留sf对象的空间属性:
# 新增site_code列
sf_data$site_code <- site_map[sf_data$forestsite]

# 可选:为未匹配的站点设置默认值(比如0)
sf_data$site_code <- ifelse(is.na(sf_data$site_code), 0, sf_data$site_code)

dplyr 实现方法

使用case_when()函数处理多条件分组,直观展示编码规则:

library(dplyr)

sf_data <- sf_data %>%
  mutate(site_code = case_when(
    forestsite == "NDUFR" ~ 1,
    forestsite == "UMNP-HQ" ~ 2,
    forestsite == "UMNP-campsite3" ~ 3,
    # 第4组:替换为实际5个站点名称
    forestsite %in% c("UMNP-hondohondoa", "站点4_2", "站点4_3", "站点4_4", "站点4_5") ~ 4,
    forestsite == "MamaGoti" ~ 5,
    # 第6组:替换为实际3个站点名称
    forestsite %in% c("UMNP-Sanje1", "站点6_2", "站点6_3") ~ 6,
    # 第7组:替换为实际2个站点名称
    forestsite %in% c("Magombera1", "站点7_2") ~ 7,
    forestsite %in% c("Sonjo", "SonjoRoad") ~ 8,
    # 未匹配站点的默认值,可根据需求修改
    TRUE ~ NA_real_
  ))

注意事项

  • 替换代码中的站点4_2、站点6_2等占位符为你的实际站点名称,确保名称完全匹配(区分大小写)。
  • sf对象在使用上述方法时,空间几何列geometry会被自动保留,无需额外处理。
  • 如果存在未在规则中的站点,可通过NA_real_或指定数值(如0)设置默认编码。

内容的提问来源于stack exchange,提问作者Marnee Roundtree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:47:21