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

在R中生成多变量全组合数据集并筛选符合条件的记录

解决方案:生成全组合数据集并筛选记录

Part 1:生成无重复全组合数据集

你之前用data.frame()的写法只是把向量按长度重复拼接,并没有生成所有变量的笛卡尔积(全组合)。要得到10个变量所有无重复的可能组合,用R内置的expand.grid()函数即可,它会自动遍历每个变量的所有取值,生成所有交叉组合。

修正后的完整代码:

# 定义各变量的取值向量
DrugA_LIFE <- c(0.5, 1, 2, 5)
DrugA_NEED <- c(0, 1)
DrugA_CERT <- c(0, 0.2, 0.4, 0.6)
DrugA_RISK <- c(0.1, 0.2, 0.4, 0.6)
DrugA_WAIT <- c(0, 0.5, 1, 2)

DrugB_LIFE <- c(0.5, 1, 2, 5)
DrugB_NEED <- c(0, 1)
DrugB_CERT <- c(0, 0.2, 0.4, 0.6)
DrugB_RISK <- c(0.1, 0.2, 0.4, 0.6)
DrugB_WAIT <- c(0, 0.5, 1, 2)

# 生成所有变量的全组合数据集
full_df <- expand.grid(
  DrugA_LIFE = DrugA_LIFE,
  DrugA_NEED = DrugA_NEED,
  DrugA_CERT = DrugA_CERT,
  DrugA_RISK = DrugA_RISK,
  DrugA_WAIT = DrugA_WAIT,
  DrugB_LIFE = DrugB_LIFE,
  DrugB_NEED = DrugB_NEED,
  DrugB_CERT = DrugB_CERT,
  DrugB_RISK = DrugB_RISK,
  DrugB_WAIT = DrugB_WAIT
)

# 可选:将数据集导出为CSV文件
write.csv(full_df, "full_combination_dataset.csv", row.names = FALSE)

Part 2:用dplyr筛选符合条件的记录

使用dplyr的filter()函数,同时指定两个筛选条件即可:

# 若未安装dplyr,先执行安装命令
# install.packages("dplyr")

# 加载dplyr包
library(dplyr)

# 筛选满足条件的记录:DrugA_LIFE与DrugB_LIFE相等,且DrugA_NEED与DrugB_NEED相等
filtered_df <- full_df %>%
  filter(DrugA_LIFE == DrugB_LIFE, DrugA_NEED == DrugB_NEED)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:13:59