如何自动为R语言数据框中相同旅程标识符的观测值编码?
解决方案
方法1:Base R 原生实现
利用factor类型的特性,将字符串转换为因子后再转为整数,即可自动给每个唯一tours分配递增的数字编码:
# 生成journey列 df$journey <- as.integer(factor(df$tours)) # 查看结果 df
运行后输出:
tours order journey 1 ansc123123 1 1 2 ansc123123 2 1 3 ansc123123 3 1 4 baa3999 1 2 5 baa3999 2 2 6 baa3999 3 2
该方法无需额外安装包,可自动识别所有唯一tours值,适配任意规模数据集。
方法2:dplyr 包实现(适合数据管道操作)
如果习惯使用tidyverse工具链,可通过以下两种方式实现:
library(dplyr) # 方式1:使用group_indices df <- df %>% mutate(journey = group_indices(., tours)) # 方式2:使用cur_group_id(需dplyr 1.0.0及以上版本) df <- df %>% group_by(tours) %>% mutate(journey = cur_group_id()) %>% ungroup()
两种方式均能达成需求,且处理大规模数据时效率表现优异。
内容的提问来源于stack exchange,提问作者OLGJ
相关产品推荐
相关产品推荐

