You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

合并两个DataFrame遇问题:代码报错及行数差异合并结果咨询

解决DataFrame合并的代码问题与结果说明

嘿,我看到你在合并两个DataFrame时碰了壁,咱们一步一步来搞定:

首先修正你的合并代码

你写的by.companiesby.rounds2并不是R中merge()函数的合法参数,这就是代码无法运行的核心原因!合并列名不同的两个表时,应该用by.x指定第一个表(也就是companies)的键列,用by.y指定第二个表(rounds2)的键列。正确的代码应该是这样:

merg <- merge(companies, rounds2, by.x = "permalink", by.y = "company_permalink", all = TRUE)

关于合并后的结果样式

你用了all = TRUE,这对应全外连接(Full Outer Join),合并后的结果会包含两个表中所有的唯一键值,具体表现如下:

  • 行数:最终行数等于两个表中所有唯一permalink/company_permalink的总数,再加上重复键带来的笛卡尔积行数。举个例子:如果companies里某个permalink出现2次,rounds2里同一个键出现3次,合并后这个键会生成2*3=6行记录。
  • 列数:两个表的列会合并到一起,但因为键列会被合并成一列(默认用by.x指定的列名permalink),所以最终列数是8+6-1=13列。
  • 空值情况:对于只在companies里存在的键,rounds2对应的列会填充NA;反之,只在rounds2里存在的键,companies对应的列会填充NA;两边都有的键,会把对应行的内容拼接在一起。

举个极简示例帮你理解:

companies表的一行:permalink="A", col1="a1", col2="a2"
rounds2表的两行:company_permalink="A", col3="b1"; company_permalink="A", col3="b2"
合并后会得到两行:

  1. permalink="A", col1="a1", col2="a2", col3="b1"
  2. permalink="A", col1="a1", col2="a2", col3="b2"

如果某个键只在companies里有,比如permalink="B",那合并后对应的行里rounds2的所有列都是NA;同理只在rounds2里的键,companies的列都是NA

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

火山引擎 最新活动