如何用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
相关产品推荐
相关产品推荐

