我有一个简单的dataframe,其中有一个6位数的大列,格式为R
:
library(dplyr)
df <- data.frame(number = c(111110, 111211, 111311, 111411, 111110, 111311, 930920, 039203, 940291, 111110),
value = seq(1,10,1)
)
输出
df
# number value
#1 111110 1
#2 111211 2
#3 111311 3
#4 111411 4
#5 111110 5
#6 111311 6
#7 930920 7
#8 39203 8
#9 940291 9
#10 111110 10
我想用“ID”重命名这些数字,但我遇到的问题是数据集中有重复的数字。
预期输出
df
# number ID value
#1 111110 ID-1 1
#2 111211 ID-2 2
#3 111311 ID-3 3
#4 111411 ID-4 4
#5 111110 ID-1 5
#6 111311 ID-3 6
#7 930920 ID-5 7
#8 39203 ID-6 8
#9 940291 ID-7 9
#10 111110 ID-1 10
问题
如何在数据框架中创建额外的列,为每个唯一的数字提供自己的ID?我认为dplyr
包和mutate
函数可能是一个选项?
3条答案
按热度按时间wqnecbli1#
从
number
列创建factor
,然后将其转换为整数。从factor
到integer
的转换将为您提供因子水平的索引:这给出:
如果要保留ID列中的原始顺序,请指定因子的水平:
jchrr9hc2#
可以使用
match
:6psbrbz93#
使用
cur_group_id