R语言合并DataFrames异常:俱乐部重复且薪资数据仅显示首个值
解决DataFrame按顺序合并的问题
问题原因
你之前用merge()或rbind()是用错了方法:
merge()是基于列值匹配合并,不是按行顺序,若两表无同名匹配列,会生成笛卡尔积导致重复行,且无法对应顺序输出薪资;rbind()是行拼接,把两个表上下堆叠,完全不符合你左右合并俱乐部和薪资的需求。
正确解决方案
因为你明确两表记录顺序完全匹配,直接用列合并即可,步骤如下:
- 先验证两表行数一致(确保顺序匹配的前提):
nrow(clubs_df) == nrow(DF_TEAMS_TOTAL_SALARY_2017)
返回TRUE才能继续。
- 给两表重命名列(避免默认的
V1这类无意义列名):
colnames(clubs_df) <- "club_name" colnames(DF_TEAMS_TOTAL_SALARY_2017) <- "total_salary_2017"
- 按顺序列合并:
方法一:用cbind()直接合并
combined_df <- cbind(clubs_df, DF_TEAMS_TOTAL_SALARY_2017)
方法二:直接给俱乐部表添加薪资列(更简洁)
clubs_df$total_salary_2017 <- DF_TEAMS_TOTAL_SALARY_2017$total_salary_2017 # 或者如果薪资表只有一列,用索引: # clubs_df$total_salary_2017 <- DF_TEAMS_TOTAL_SALARY_2017[,1]
验证结果
合并后可以查看结果:
head(combined_df)
内容的提问来源于stack exchange,提问作者Daniel Isaac Chavez
相关产品推荐
相关产品推荐

