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

R中使用tidyverse的union_all合并数据后行数少8M是什么原因

行数缺失原因排查
  • 列删除操作未生效:你提供的删列代码存在变量名拼写错误:删除拥堵附加费列时,2020年数据表的变量名写为tax_data_2020,但后续合并调用的是taxi_data_2020,缺漏字母i的问题导致待合并的2020年数据表未被修改,仍保留19列。当传入列数量不匹配的对象时,部分版本union_all会自动按最少列数截断,仅保留列名完全对齐的行,直接导致大量数据丢失。
  • 列属性不匹配:即便修正拼写错误保证4个表均为18列,也需要确认所有同名列的字段类型完全一致。例如上车时间字段在2017年为时间类型,2018年为字符类型时,union_all合并时会丢弃类型无法对齐的行,或因隐式转换失败导致行数减少。
  • 包命名冲突:tidyverse内置的dplyr::union_all会按列名匹配、保留所有输入行,但如果你同时加载了plyr包,plyr::union_all会按列位置匹配,和dplyr版本的逻辑差异极大,极易出现数据丢失。可通过明确指定包名的方式规避冲突,比如调用dplyr::union_all执行合并。
  • 前置校验缺失:合并前可先统计4个数据表的行数总和,和合并后的结果做对比。同时可通过intersect(names(taxi_data_2017), names(taxi_data_2018))这类语句逐一核对4个表的列名完全一致,用lapply(list(taxi_data_2017, taxi_data_2018, taxi_data_2019, taxi_data_2020), str)检查列类型完全匹配,避免因元数据不一致导致数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:18:00