You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于另一列值生成编号列的R语言实现求助

解决方法

方法一:Base R 原生实现

无需额外安装包,直接通过因子转换生成符合要求的编号:

# 生成Index列
df$Index <- as.integer(factor(df$layer1_name, levels = unique(df$layer1_name)))

# 查看结果
df

运行后输出与期望完全一致:

layer0_name layer1_name Index
1   1_10177_A_AC    DDX11L1     1
2    1_14599_T_A     WASH7P     2
3   1_15903_G_GC     WASH7P     2
4 1_54712_TTTTC_T      OR4F5     3
5    1_54716_C_T      OR4F5     3

原理:unique(df$layer1_name)按值的出现顺序提取唯一值作为因子水平,转换为整数后自动生成从1开始的连续编号,相同layer1_name对应同一编号。

方法二:dplyr 实现

如果习惯使用tidyverse生态,可通过dplyr的分组函数实现:

library(dplyr)

# 写法1:使用group_indices
df <- df %>% mutate(Index = group_indices(., layer1_name))

# 写法2:使用cur_group_id(需dplyr 1.0.0及以上版本)
df <- df %>%
  group_by(layer1_name) %>%
  mutate(Index = cur_group_id()) %>%
  ungroup()

两种写法均能按layer1_name分组分配连续编号,达到需求效果。

内容的提问来源于stack exchange,提问作者VasoGene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:39:55