2015-01-04 24 views
1

所以这是一个快速问题。
我有一个面板数据的数据框,其中我有一列每个人的标识/名称/ ID。可以说,这个专栏有n个层次,也就是说,在一定的时间范围内有n个专家。
我想添加一个列N到数据框与这个值n,这是一个水平编号。
这就是每个ID /名称/等级被分配一个从1到n的数字。 这里是一个代码,做什么,我想:R:数字级别并分配给新列,对于大数据集

i = 1 
for(l in levels(data$IDs)) { 
data[data$ID == l,]$N = i 
i = i+ 1 
} 

到目前为止好。问题:我的数据集很大。很大。手动做这件事太多了。而上述操作需要花费太多时间。 这是一个循环,所以我的猜测是有一个更快的方法来使用向量操作在R中执行此操作。 任何人都知道一个计算快速的方法来做到这一点?

回答

2

只需使用data$N <- as.integer(data$ID)。因子变量是内部整数。因此,很容易将它们转换为整数变量。

+0

谢谢,这工作,花了大约一秒,而以前已经运行了1个多小时。 – IMA 2015-01-04 13:21:08

+0

想象一下,我现在感觉到多么愚蠢,我敢于 – IMA 2015-01-04 13:21:27

+0

如果这花了一秒钟,你的数据集足够大,你可能想看看包data.table。 – Roland 2015-01-04 13:22:08

相关问题