R语言如何为dataframe生成步长为5的自定义起始逐行递增ID列
R实现按固定步长生成递增ID列的最简方案
根本不需要写循环或者自定义函数,直接用R原生向量化运算即可,代码简洁运行效率还高,两步就能搞定:
- 第一步:计算ID序列的起始值N,即另一个数据集目标列的最大值,注意如果列中存在缺失值要加
na.rm = TRUE参数避免返回无效值:N <- max(参考数据集名$参考列名, na.rm = TRUE) - 第二步:用
seq()生成步长为5、长度和当前数据框行数一致的递增序列,直接赋值为名为ID的新列即可:目标数据框名$ID <- seq(from = N, by = 5, length.out = nrow(目标数据框名))
示例代码
假设参考数据集叫df_ref,要取最大值的列为user_id,需要添加ID列的目标数据集叫df_target,完整可运行代码如下:
# 计算起始值N N <- max(df_ref$user_id, na.rm = TRUE) # 新增步长为5的递增ID列 df_target$ID <- seq(from = N, by = 5, length.out = nrow(df_target))
方案说明
- 不要用for循环逐行赋值:R的向量化函数是底层优化实现的,哪怕是百万行级别的数据集也能瞬间跑完,循环写法运行效率低很多,完全没必要。
- 不需要额外封装自定义函数:整个逻辑只有两行核心代码,封装函数属于冗余操作。
- 生成的ID天然符合要求:序列从N开始逐行加5,每行ID唯一,不会出现重复值。
内容的提问来源于stack exchange,提问作者Andre230
相关产品推荐
相关产品推荐

