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

如何用tidyverse熔解DataFrame并从列名拆分生成level新列

宠物调查数据熔解与层级提取方案

步骤1:正确执行数据熔解

先修正reshape2::melt的参数,匹配你需要的变量名与值名称:

library(reshape2)

# 将原始数据熔解,指定标识变量、变量名和值名称
melted_data <- melt(raw_data,
                    id.vars = "Animal", 
                    variable.name = "household", 
                    value.name = "abundance")

步骤2:从家庭列名提取层级信息

假设你的家庭列名格式为「层级标识+编号」(如a1、a2、b1这类),直接提取列名首字符作为层级:

# 提取household列名的第一个字符作为level
melted_data$level <- substr(as.character(melted_data$household), 1, 1)

如果家庭列名格式更灵活(如household_a1、b_household2),可以用stringr包精准匹配提取a/b:

library(stringr)

# 从household列名中匹配提取a或b
melted_data$level <- str_extract(as.character(melted_data$household), "[ab]")

最终结果说明

处理后的melted_data会包含四列:Animal(宠物类型)、household(家庭标识)、abundance(宠物数量)、level(层级a/b),完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:35:21