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

在R中基于Group、Variable/Variable_多条件合并DataFrame与列表

R语言:基于双条件(Variable/Variable_)合并嵌套列表与DataFrame

注意事项:原列表结构问题

你定义的List存在重复的GROUP1/Group2/Group3键,R语言中列表的重复键会被后面的子列表覆盖,导致丢失V1-V5的原始数据。首先需要修正列表结构,将每个Group下的V1-V5和V1_-V5_键值对放在同一个子列表中:

# 修正后的嵌套列表
List <- list(
  Group1 = list(V1 = 0.857138, V2 = 1, V3 = 0.5, V4 = "not limiting", V5 = 0.1,
                V1_ = "x", V2_ = "x", V3_ = "x", V4_ = "x", V5_ = "x"),
  Group2 = list(V1 = 0.65, V2 = 1, V3 = 1, V4 = 0.6, V5 = 0.25,
                V1_ = "x", V2_ = "x", V3_ = "x", V4_ = "x", V5_ = "x"),
  Group3 = list(V1 = 0.65, V2 = 0.75, V3 = 0.3, V4 = 1, V5 = 1,
                V1_ = "x", V2_ = "x", V3_ = "x", V4_ = "x", V5_ = "x")
)

解决方案代码

使用tidyverse工具链,分别提取并整理Variable和Variable_对应的数据,再合并到原DataFrame:

library(tidyverse)

# 提取并整理Variable对应的数据(不带下划线的变量)
var_data <- List %>%
  unlist() %>%
  enframe(name = "key", value = "Variable_Value") %>%
  separate_wider_delim(cols = key, names = c("Group", "Variable"), delim = "\\.") %>%
  filter(!str_detect(Variable, "_"))

# 提取并整理Variable_对应的数据(带下划线的变量)
var_underscore_data <- List %>%
  unlist() %>%
  enframe(name = "key", value = "Variable__Value") %>%
  separate_wider_delim(cols = key, names = c("Group", "Variable_"), delim = "\\.") %>%
  filter(str_detect(Variable_, "_"))

# 双条件合并到原DataFrame
result <- data %>%
  left_join(var_data, by = c("Group", "Variable")) %>%
  left_join(var_underscore_data, by = c("Group", "Variable_"))

结果验证

执行print(result)可以看到原DataFrame新增了Variable_Value(对应Variable列的取值)和Variable__Value(对应Variable_列的取值)两列,所有匹配项均已正确填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:45:07