R:对于大数据集,对级别进行编号并分配给新列

标签 r levels

这是一个简单的问题。
我有一个面板数据数据框,其中有一列每个人的身份/姓名/ID。假设此列有 n 个级别,即在特定时间范围内面板中有 n 个个人。
我想将 N 列添加到数据框中,其值为 n,即级别编号。
也就是说,每个 ID/名称/级别都被分配一个从 1 到 n 的数字。 这是执行我想要的操作的代码:

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

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

最佳答案

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

关于R:对于大数据集,对级别进行编号并分配给新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765689/

相关文章:

r - 将因子水平顺序从一列复制到另一列

r - 将相同的因子水平应用于R中具有不同水平数量的多个变量

R C 符号名称 "do_is_ordered"不在包 xts 的 DLL 中

r - NA 上的子集

r - 如何将列值转换为 R 中数据框中每个唯一值的行?

R:为wordcloud图形/png添加标题

r - 如果某些行满足条件,则使用 R 中的数据表标记组中的所有行

r - 更改 R 中因子变量水平的函数