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

R语言merge()合并数据集后行数大幅增加的原因咨询

合并Fitbit数据集后行数暴增的原因及解决方法

原因分析

你遇到的是典型的笛卡尔积问题:

  • 当仅通过Id列合并两个数据集时,merge()函数会将第一个数据集中某个Id对应的所有记录,和第二个数据集中同一个Id对应的所有记录进行两两配对。
  • 从你的小时级Fitbit数据来看,每个用户(Id)对应多条不同时间的记录,比如用户123在卡路里数据里有N条记录,在强度数据里也有N条对应时间的记录,仅按Id合并就会生成N*N条该用户的记录,最终整体行数会暴增到两个数据集行数的乘积除以唯一用户数,也就是你看到的15393213行。

解决方案

你需要同时按用户ID+时间进行合并,注意两个数据集的时间列名大小写不同(一个是ActivityHour,一个是Activityhour),需明确指定匹配的列:

calories_merged_data <- merge(hourlyCalories_merged, hourlyIntensities_merged, 
                              by.x = c('Id', 'ActivityHour'), 
                              by.y = c('Id', 'Activityhour'))

这样合并后,同一个用户同一小时的卡路里和强度数据会正确对应,行数会和原数据集一致(22099行,前提是两个数据集的Id+时间组合完全匹配)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:50:14