凌乱csv文件的R-data.table组索引方法

凌乱csv文件的R-data.table组索引方法,r,indexing,data.table,R,Indexing,Data.table,我正在努力学习数据。然而,我看到它的速度是指数级的。因此,我在这里要求您使用data.table方法来解决我的问题 我希望通过data.table完成的任务如下: 假设我有一个1200万的.csv文件,其结构与此类似: 注意:在真实的文件中,每个组都有几百条记录 1; 0.00;0.01;0.00 2; -0.00;0.01;-0.02 -0.00;0.01;-0.01 0.00;0.00;0.01 3; 0.00;0.01;0.00 0.01;0.01;-0.0

我正在努力学习数据。然而,我看到它的速度是指数级的。因此,我在这里要求您使用data.table方法来解决我的问题

我希望通过data.table完成的任务如下: 假设我有一个1200万的.csv文件,其结构与此类似:
注意:在真实的文件中,每个组都有几百条记录

1;  
0.00;0.01;0.00  
2;  
-0.00;0.01;-0.02  
-0.00;0.01;-0.01  
0.00;0.00;0.01  
3;  
0.00;0.01;0.00  
0.01;0.01;-0.00   
4;  
0.00;0.01;0.00   
-0.00;0.01;-0.02    
5;  
0.00;0.01;0.00  
0.01;0.01;-0.00  
整数表示ID,而记录是属于该索引的观察值。答案是生成以下内容的解决方案:

Var_A <- c(0.00, -0.00, -0.00, 0.00,0.01,0.00,0.01,-0.00,0.00,0.01) 
Var_B <- c(0.01, 0.01, 0.01, 0.01,0.01,0.01,0.01,0.01,0.01,0.01)  
Var_C <- c(0.00, -0.02, -0.01,0.00,-0.00,0.00,-0.00,-0.02,0.00,-0.00)   
ID <- c(1, 2, 2, 2, 3, 3,4,4,5,5) 
solution_df <- data.frame(Var_A, Var_B, Var_C, ID)

Var_A我们可以使用
readLines
读取数据集,然后使用
str_count
根据
的数量创建一个逻辑向量,然后通过逻辑向量的累积和创建“ID”。然后用逻辑向量将数据子集,用
read.table
读取,用'ID'读取
cbind

library(stringr)
i1 <- str_count(lines, ";")==1
cbind(ID = cumsum(i1)[!i1], read.table(text=lines[!i1], sep=";"))
库(stringr)

i1谢谢你的快速回复,非常酷!然而,我可能没有正确地解释我自己,因为这不是我解决实际问题所需要的方法
lines <- readLines(textConnection(
"1;
0.00;0.01;0.00
2;
-0.00;0.01;-0.02
-0.00;0.01;-0.01
0.00;0.00;0.01
3;
0.00;0.01;0.00
0.01;0.01;-0.00
4;
0.00;0.01;0.00
0.01;0.01;-0.00
-0.00;0.01;-0.02
5;
0.00;0.01;0.00
0.01;0.01;-0.00")) 

#Or read from the file
lines <- readLines('file.csv')