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

使用R(Tidyverse)/Excel Power Query将txt植被调查数据转为目标CSV表

你的txt数据格式规则统一,完全可以实现目标字段提取,以下是两个可直接落地的操作方案:

方案1:Excel Power Query 操作(无需编写复杂代码)
  • 导入数据:选择Excel「数据」选项卡下的「从文本/CSV」,选中你的txt文件导入,导入时不做自动拆分,将所有内容加载为单列,列名可设为raw_text
  • 筛选有效行:添加索引列后,仅保留行内容以Plot 、CVS: class 、CSR: C:开头的行,其余无关行全部删除
  • 提取字段:
    • 对Plot 开头的行,提取后方数字作为PLOT字段值
    • 对CVS: class 开头的行,提取后方数字作为CVS字段值
    • 对CSR: C:开头的行,分别提取C、S、R后方的数值,拆分为三个独立字段
  • 合并数据:每个样地对应3行有效数据,按行号每3行分为一组,将同组字段透视到同一行,调整列顺序即可得到目标表格。
方案2:R语言Tidyverse 实现(处理速度快,适合1600个样地的批量场景)

替换代码中的文件路径为你本地的txt文件路径,直接运行即可得到结果:

library(tidyverse)

# 替换为你的txt文件本地路径
input_file <- "你的植被调查数据.txt"

df_result <- read_lines(input_file) %>%
  # 移除所有空行
  discard(~ .x == "") %>%
  # 逐行匹配提取目标字段
  map_dfr(~{
    if (str_starts(.x, "Plot ")) {
      tibble(PLOT = as.numeric(str_extract(.x, "(?<=Plot )\\d+")))
    } else if (str_starts(.x, "CVS: class ")) {
      tibble(CVS = as.numeric(str_extract(.x, "(?<=CVS: class )\\d+")))
    } else if (str_starts(.x, "CSR: C:")) {
      tibble(
        C = as.numeric(str_extract(.x, "(?<=C: )\\d+\\.?\\d*")),
        S = as.numeric(str_extract(.x, "(?<=S: )\\d+\\.?\\d*")),
        R = as.numeric(str_extract(.x, "(?<=R: )\\d+\\.?\\d*"))
      )
    } else {
      NULL
    }
  }) %>%
  # 向下填充PLOT、CVS字段,匹配到对应的CSR数值行
  fill(PLOT, CVS, .direction = "down") %>%
  # 移除空值行,仅保留完整数据
  drop_na(C, S, R)

# 预览结果
print(df_result)
# 导出为CSV格式表格
write_csv(df_result, "样地指标提取结果.csv")

代码完全匹配你给出的文本格式规则,不需要额外调整正则逻辑,全量1600个样地的处理时长不超过1秒,不会出现错配漏配问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:48:19