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

如何基于多数据框公共变量为DataFrame新增列及计算衍生列

解决方案(R语言)

这里有个简单直接的方法来实现你要的效果,不管用基础R还是tidyverse都能轻松搞定,下面是具体步骤:

1. 先创建示例数据(方便复现)

首先我们把你给出的所有数据框用代码创建出来:

# 主数据框
df1 <- data.frame(
  Class = c("Paladin", "Fighter", "Wizard", "Rouge"),
  Race = c("Human", "Elf", "Gnome", "Elf"),
  Level = c(4, 5, 3, 4),
  stringsAsFactors = FALSE
)

# 任务1数据
Mission1 <- data.frame(
  Class = c("Paladin", "Fighter", "Cleric", "Wizard"),
  Exp = c(80, 70, 100, 80),
  stringsAsFactors = FALSE
)

# 任务2数据
Mission2 <- data.frame(
  Class = c("Cleric", "Fighter", "Wizard"),
  Exp = c(200, 220, 190),
  stringsAsFactors = FALSE
)

# Boss战数据
Boss1 <- data.frame(
  Class = c("Wizard", "Paladin", "Cleric", "Druid"),
  Exp = c(500, 520, 490, 500),
  stringsAsFactors = FALSE
)

2. 添加匹配标记列

我们需要判断df1中的每个职业是否出现在Mission1、Mission2、Boss1的职业列表里,用%in%就能快速实现,再把逻辑值转成1/0:

方法一:基础R写法

# 复制df1到df2,避免修改原数据
df2 <- df1

# 添加匹配列:存在为1,不存在为0
df2$Mission1 <- as.integer(df2$Class %in% Mission1$Class)
df2$Mission2 <- as.integer(df2$Class %in% Mission2$Class)
df2$Boss1 <- as.integer(df2$Class %in% Boss1$Class)

方法二:tidyverse写法(更简洁)

如果你习惯用dplyr,可以这样写:

library(dplyr)

df2 <- df1 %>%
  mutate(
    Mission1 = as.integer(Class %in% Mission1$Class),
    Mission2 = as.integer(Class %in% Mission2$Class),
    Boss1 = as.integer(Class %in% Boss1$Class)
  )

3. 计算衍生列

接下来直接对已有的标记列求和,得到Missions和Final列:

# 计算任务总和
df2$Missions <- df2$Mission1 + df2$Mission2

# 计算最终总和
df2$Final <- df2$Missions + df2$Boss1

最终结果

运行完上面的代码后,df2就会和你预期的完全一致:

> df2
     Class  Race Level Mission1 Mission2 Missions Boss1 Final
1 Paladin Human     4        1        0        1     1     2
2 Fighter   Elf     5        1        1        2     0     2
3  Wizard Gnome     3        1        1        2     1     3
4   Rouge   Elf     4        0        0        0     0     0

小解释

  • %in%是R里用来检查元素是否存在于另一个向量中的常用操作符,返回TRUE/FALSE
  • as.integer()把逻辑值转换成整数:TRUE→1,FALSE→0,刚好符合你的需求
  • 衍生列的计算就是简单的列之间相加,逻辑清晰易懂

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:34:23