R:重新标记模拟数字的有效方法

R:重新标记模拟数字的有效方法,r,dataframe,R,Dataframe,我目前正在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)) Desired_Resul

我目前正在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))
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))
这些数据持续了很长时间(约300万行)。我需要帮助的是找到一个有效的函数,它可以让我重新标记从1开始的实现数。结果应该是这样的:

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))
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))
我已经尝试过逐行遍历数据帧,但由于大小的原因,这不是一个可行的解决方案。重要的是,数据帧在操作前后保持相同的顺序。在此问题上的任何帮助都将不胜感激

谢谢, Dan

您可以使用
factor()
在这里提供帮助

transform(Events, New_Realization = as.numeric(factor(Realization, levels=unique(Realization))))
您可以使用
factor()
在此处提供帮助

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

在您的示例中,如果列中再次出现875,它仍然是1

我想试试这个:

Events$New_Realization = cumsum(!duplicated(Events$Realization))

在您的示例中,如果列中再次出现875,它仍然是1

我想试试这个:

Events$New_Realization = cumsum(!duplicated(Events$Realization))

这个答案非常有效。简单快速!数据框中的实现已被排序,因此不可能在行的后面看到重复的实现编号。欢迎您!享受处理3M行数据的乐趣。frame=)这个答案非常有效。简单快速!数据框中的实现已被排序,因此不可能在行的后面看到重复的实现编号。欢迎您!享受处理3M行数据的乐趣。frame=)