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

如何用R将指定列转换为行并关联对应树号与物种信息

R语言实现宽表转长表:拆分dbh列到census列

用tidyverse工具包中的pivot_longer函数就能轻松实现这个需求,这是目前tidyverse中处理宽转长最直观高效的方法,处理1万行数据毫无压力。

核心代码

# 加载tidyverse包
library(tidyverse)

# 假设你的原始数据集名为df,执行转换
df_long <- df %>%
  pivot_longer(
    cols = starts_with("dbh"),  # 匹配所有以dbh开头的列(dbh1、dbh3、dbh4)
    values_to = "census"        # 将原列的值存入新列「census」
  ) %>%
  select(Tree, Spec, census)    # 保留需要的列(可选,若要保留原列名可去掉此行)

参数说明

  • cols = starts_with("dbh"):自动匹配所有以dbh开头的列,比手动罗列dbh1, dbh3, dbh4更灵活,后续新增同格式列也能自动适配
  • values_to = "census":指定存储原列值的新列名称为「census」
  • 若需要保留原dbh列的编号(比如区分是dbh1还是dbh3),可以添加names_to = "census_label"参数,转换后会多一列记录原列名

示例演示

原始数据

df <- tibble(
  Tree = c(1, 2, 3),
  Spec = c("A", "B", "A"),
  dbh1 = c(10, 15, 8),
  dbh3 = c(12, 18, 9),
  dbh4 = c(14, 20, 11)
)

转换后结果

# A tibble: 9 × 3
   Tree Spec  census
  <dbl> <chr>  <dbl>
1     1 A         10
2     1 A         12
3     1 A         14
4     2 B         15
5     2 B         18
6     2 B         20
7     3 A          8
8     3 A          9
9     3 A         11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:05:44