在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
相关产品推荐
相关产品推荐

