如何修改大型数据集中重复ID值且不改动其他行列原有数据
解决方案
批量自动处理重复ID(推荐,无需手动修改单条数据)
用基础R代码即可批量处理所有重复ID,完全不会改动其他列的原有数值:
# 方法1:给重复ID加序号后缀保留原始信息,如两个1756会变为1756_1、1756_2 Initial_df$sofifa_id <- ave( Initial_df$sofifa_id, Initial_df$sofifa_id, FUN = function(x) { if (length(x) > 1) paste0(x, "_", seq_along(x)) else x } ) # 方法2:重复ID顺延为全新连续数字,如第二个1756变为当前数据集最大ID+1 max_id <- max(as.numeric(Initial_df$sofifa_id), na.rm = TRUE) dup_rows <- duplicated(Initial_df$sofifa_id) Initial_df$sofifa_id[dup_rows] <- as.character(max_id + cumsum(dup_rows)[dup_rows])
原有手动修改代码的修正
如果仅需要修正单条1756重复的情况,你现有代码的错误点是nrow(Initial_df$sofifa_id)写法错误,sofifa_id是单列向量没有行数属性,而且你写的逻辑是新增行而非修改原有重复行,会导致数据集总条数超出513条,修正后写法:
# 定位第二个1756的行位置,仅替换ID字段即可,其他字段保持不变 dup_pos <- which(Initial_df$sofifa_id == "1756")[2] Initial_df[dup_pos, "sofifa_id"] <- "1757"
内容的提问来源于stack exchange,提问作者sohan singh
相关产品推荐
相关产品推荐

