R:重新标记模拟编号的有效方法

我目前正在R中的一个项目中,用于对我已经运行的一些模拟的结果进行分层。当前,我拥有的数据存储在标题为“事件”的数据框中,其外观如下:

Events = data.frame(Realization = c(875,875,2150,3675,25),Event_ID = c(1500,1510,700,810,520),Loss = c(100,200,250,100,600))

,此数据将持续很长时间(约3M行)。我需要帮助的是找到一个有效的函数,该函数可以让我重新标记从1开始的实现编号。结果应该是这样的:

Desired_Result = data.frame(Realization = c(875,600),New_Realization = c(1,1,2,3,4))

我已经尝试过逐行遍历数据帧,但是由于大小原因,这不是可行的解决方案。在操作之前和之后,数据帧保持相同的顺序非常重要。对此问题的任何帮助将不胜感激!

谢谢, 丹

hailang_163 回答:R:重新标记模拟编号的有效方法

您可以使用factor()来帮助

transform(Events,New_Realization = as.numeric(factor(Realization,levels=unique(Realization))))
,

在您的示例中,如果在该列中再次出现875,它仍为1?

我会尝试:

Events$New_Realization = cumsum(!duplicated(Events$Realization))
本文链接:https://www.f2er.com/3156404.html

大家都在问