我有四个CSV文件。这些文件的结构均相同,包含21列(第一列是时间点),接下来的20列是不同种类的数据点。每个文件的行数都不同。
我希望为20列中的每一列(除了第一列之外的所有列,这都是时间)创建一个数据框。该数据框将包含两列(1:来自所有四个CSV文件的特定列(即第3列)的数据,以及2:级别(1代表从CSV文件1获取的数据点,2代表CSV文件2、3)表示CSV文件3,4表示CSV文件4)。
任何帮助将不胜感激!
谢谢你, J
由于我想完成20次此任务,所以我认为使用for循环是明智的。下面是我的代码。每次运行代码时,都会遇到相同的错误:“要替换的项目数不是替换长度的倍数”。
# Vectors contains the vectors that will hold the data specific to each column from all four CSV files
# Doc1, Doc2, Doc3, and Doc4 are data frames that contain each of the columns (besides the first one (time)) of the original CSV files. In this case, the first column in any of these files corresponds to the second column in the original CSV file.
Vectors = c(Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10, Col11, Col12, Col13, Col14, Col15, Col16, Col17, Col18, Col19, Col20, Col21)
for (value in c(1:20)) {
Levels = c() # levels signifies the document of origin per data point (i.e. 1 for CSV file 1, 2 for CSV file 2, etc.)
Vectors[value] = c(Doc1[,value])
Vectors[value] = append(Vectors[value], Doc2[,value])
Vectors[value] = append(Vectors[value], Doc3[,value])
Vectors[value] = append(Vectors[value], Doc4[,value])
Levels = c(rep(1, length(Doc1[,value]))
Levels = append(Levels, rep(2, length(Doc2[,value])))
Levels = append(Levels, rep(3, length(Doc3[,value])))
Levels = append(Levels, rep(4, length(Doc4[,value])))
Vectors[value] = data.frame(Vectors[value], Levels)
}
我希望for循环能够运行并将值分配给Vector中的每个向量。同样,分配给这些向量的值将是存储在每个CSV文件(doc1,doc2,doc3,doc4)中特定编号列中的数据。然后,我期望for循环生成与每个数据点相对应的级别。然后,我希望for循环将这两个循环作为一个数据帧连接起来,这将被命名为Col2,Col3等,具体取决于for循环运行了多少次。
相反,我将收到以下警告消息:要替换的项目数不是替换长度的倍数。
再次感谢您提供的所有帮助。我是R的新手,非常感谢任何人提供的任何建议。
答案 0 :(得分:0)
非常仔细地,您可能会认为您已经问过这个问题,一张图片(或数据!)值一千字。我可以建议您将问题简化为尽可能小的数据集,甚至可以建议为您的问题开发伪代码并显示出来。