【发布时间】:2016-12-07 22:24:49
【问题描述】:
以下循环需要很长时间。有什么方法可以更省时吗?以下 data.table 包含 27 个变量和超过 60 万个观测值。
data <- read.table("file.txt", header = T, sep= "|")
colnames(data)[c(1)] <- c("X")
data <- as.data.table(data)
n=1;
vector <- vector()
for(i in 2:nrow(data))
{
if(data[["X"]][i] != data[["X"]][i-1])
{
n=1; vector[i]=1}
else {
n=n+1; vector[i]=n}}
基本上,我需要索引 X 中唯一条目的每次出现,即第一次出现、第二次出现等,然后将其合并到现有数据中作为附加列。但是,我在编译矢量时得到了股票。
谢谢。
【问题讨论】:
-
更耗时的方式?
-
vector在哪里发起? -
还有
n在哪里发起... -
我想你想要像
data[, v := rowid(X)]这样的东西。当您不提供示例数据并编辑不是首先创建的“向量”时,很难将问题可视化。 -
我的错,刚刚复制并粘贴了部分脚本...现在编辑。
标签: r for-loop optimization time data.table