如何在R语言的面板数据框中为国家分配唯一ID编号
R实现唯一国家ID列创建的两种方案
你可以基于已加载的dplyr库,选择以下任意一种方法实现需求,推荐优先使用国家三字码isocode作为ID分配的依据,避免国家名称拼写差异带来的错误:
方法1:dplyr分组分配(逻辑直观易调整)
适用于需要同时进行其他分组操作的场景,dplyr版本≥1.0.0可用:
df <- df %>% # 按国家三字码分组,如需按国家名称分配替换为group_by(country) group_by(isocode) %>% # cur_group_id()会按分组变量的字母升序给每个组分配从1开始的连续ID mutate(id_num = cur_group_id()) %>% # 取消分组避免后续操作受分组影响 ungroup()
方法2:因子转整数(效率更高适合大数据集)
不需要分组操作,单语句即可完成,执行速度更快:
# sort(unique())保证ID按isocode的字母升序分配,不需要固定排序可以去掉该参数 df$id_num <- as.integer(factor(df$isocode, levels = sort(unique(df$isocode))))
验证效果
你可以用以下语句检查分配结果是否符合预期:
# 按ID升序查看每个国家对应的唯一编号 distinct(df, country, isocode, id_num) %>% arrange(id_num)
内容的提问来源于stack exchange,提问作者jck21
相关产品推荐
相关产品推荐

