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

在R语言中生成两个DataFrame变量全组合并保留其余变量的方法

在R中生成两个DataFrame的全笛卡尔积并保留所有变量

你要的是两个DataFrame的全笛卡尔积(所有行的组合),同时保留原数据的所有变量并自动区分来源,有两种简单实现方法:

方法1:基础R的merge()函数

直接使用merge()并设置by = NULL,就能自动为重复变量名添加.x/.y后缀,完美匹配你的预期结果:

df1 <- data.frame(var1 = c("A", "B", "C"), var2 = c(1,2,3))
df2 <- data.frame(var1 = c("D", "E", "F"), var2 = c(4,5,6))

# 生成全笛卡尔积并保留所有变量
result <- merge(df1, df2, by = NULL)
print(result)

运行结果:

var1.x var2.x var1.y var2.y
1      A      1      D      4
2      B      2      D      4
3      C      3      D      4
4      A      1      E      5
5      B      2      E      5
6      C      3      E      5
7      A      1      F      6
8      B      2      F      6
9      C      3      F      6

方法2:dplyr包的cross_join()函数

如果习惯用tidyverse工具链,dplyr的cross_join()是专门生成笛卡尔积的函数,用法更直观:

library(dplyr)

result <- cross_join(df1, df2)
print(result)

输出结果与上述方法完全一致,变量名同样会自动添加.x/.y后缀。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:31:16