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