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

如何基于两个参数创建符合条件的虚拟变量(R语言)

在R中创建符合条件的虚拟变量并按国家分类

需求说明

生成名为Result的虚拟变量:

  • 当Parameter1取值为A或B,且Parameter2为正值时,Result = 1
  • 任一条件不满足时,Result = 0
    最终结果按国家分类展示。

示例数据加载

先加载你提供的示例数据:

df <- read.table(
  text =
"Country, Year, Parameter1, Parameter2, Result,
US, 1, A, 12, 1,
US, 2, B, 4, 1,
US, 3, C, 2, 0,
US, 4, A, -4, 0,
UK, 1, A, -1, 0,
UK, 2, C, 2, 0,
UK, 3, B, 3, 1,
UK, 4, B, 2, 1, ", sep = ",", header = TRUE)

方法一:基础R实现

直接通过逻辑判断生成虚拟变量,再按国家排序实现分类展示:

# 生成Result变量
df$Result <- as.integer(df$Parameter1 %in% c("A", "B") & df$Parameter2 > 0)

# 按国家排序,对应按国家分类的需求
df <- df[order(df$Country), ]

逻辑说明:

  • df$Parameter1 %in% c("A", "B"):判断Parameter1是否为A或B,返回布尔值
  • df$Parameter2 > 0:判断Parameter2是否为正值,返回布尔值
  • &:逻辑“且”,仅当两个条件都满足时返回TRUE
  • as.integer():将布尔值TRUE/FALSE转换为1/0

方法二:dplyr包实现(适合流程化数据处理)

用dplyr的mutate生成变量,arrange按国家排序:

library(dplyr)

df <- df %>%
  # 生成Result变量
  mutate(Result = as.integer(Parameter1 %in% c("A", "B") & Parameter2 > 0)) %>%
  # 按国家排序,实现分类展示
  arrange(Country)

验证结果

处理后的数据与示例结果一致:

CountryYearParameter1Parameter2Result
1UK1A-10
2UK2C20
3UK3B31
4UK4B21
5US1A121
6US2B41
7US3C20
8US4A-40

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:01:36