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

R语言数据规整问题:将嵌套变量列拆分为多列

拆分DataFrame中键值对格式列的解决方案

根据你的需求,使用tidyverse工具拆分variables列的键值对并转为宽表,分两种常见场景处理:

场景1:variables列是JSON格式字符串

如果variables中的内容是标准JSON格式(如{"temp":22.5, "humidity":70, "wind_dir":"NW"}),可以用以下步骤处理:

library(tidyverse)
library(jsonlite)

# 替换为你的数据框名称
weather_data <- weather_data %>%
  # 将JSON字符串转为列表列
  mutate(variables = map(variables, jsonlite::fromJSON)) %>%
  # 把列表列拆分为单独的列,names_sep用于处理重名变量
  unnest_wider(variables, names_sep = "_")

场景2:variables列是逗号分隔的键值对字符串

如果variables中的内容是类似"temp:22.5, humidity:70, wind_dir:NW"的格式,用以下流程处理:

library(tidyverse)

weather_data <- weather_data %>%
  # 将每个键值对拆分为单独行
  separate_rows(variables, sep = ", ") %>%
  # 拆分键和值为两列,注意匹配实际的键值分隔符
  separate(variables, into = c("var_name", "var_value"), sep = ": ") %>%
  # 转为宽表,缺失的变量值用NA填充
  pivot_wider(names_from = var_name, values_from = var_value, values_fill = NA) %>%
  # 可选:将数值型变量转为对应类型
  mutate(across(c(temp, humidity), as.numeric))

注意事项

  • 请根据实际的分隔符调整sep参数(比如如果键值用=分隔,就把sep = ": "改成sep = " = ")
  • 如果部分行缺少某些变量,pivot_wider会自动用values_fill指定的值填充,确保所有变量列都被保留
  • 若变量名存在重复,可在unnest_wider或pivot_wider中设置names_sep参数添加前缀/后缀避免冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:36:39