我目前正在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,875,2150,3675,25),
Event_ID = c(1500,1510,700,810,520),
Loss = c(100,200,250,100,600),
New_Realization = c(1,1,2,3,4))
我已经尝试过逐行遍历数据帧,但是由于大小原因,这不是可行的解决方案。在操作之前和之后,数据帧保持相同的顺序非常重要。对此问题的任何帮助将不胜感激!
谢谢, 丹
答案 0 :(得分:0)
您可以使用factor()
来帮助
transform(Events, New_Realization = as.numeric(factor(Realization, levels=unique(Realization))))
答案 1 :(得分:0)
在您的示例中,如果在该列中再次出现875,它仍为1?
我会尝试:
Events$New_Realization = cumsum(!duplicated(Events$Realization))