如何在R中为面板数据集的企业列创建唯一ID变量
R 面板数据投资方唯一ID生成方案
tidyverse 实现(匹配你提到的分组思路)
你提到的group_by+mutate的思路完全可行,搭配cur_group_id()函数即可快速生成连续整数ID:
# 加载依赖包 library(tidyverse) # 生成investorid列 df <- df %>% group_by(investor) %>% mutate(investorid = cur_group_id()) %>% ungroup()
该方法会按投资方在数据集中首次出现的顺序分配ID,同一投资方的所有记录对应同一个ID值,完全符合你的需求。
更高效的无分组实现
针对大体积数据集,不用分组的方案运行速度更快,结果和上述方法完全一致:
df <- df %>% mutate(investorid = as.integer(factor(investor, levels = unique(investor))))
base R 实现(无需加载第三方包)
如果你不想引入tidyverse依赖,用基础函数也可以快速实现:
df$investorid <- as.integer(factor(df$investor, levels = unique(df$investor)))
可选调整
如果需要按照投资方名称的字母/拼音排序生成ID,只需要把上述代码中的unique(investor)替换为sort(unique(investor))即可。
内容的提问来源于stack exchange,提问作者R Wd
相关产品推荐
相关产品推荐

