合并从CSV文件,许多数据帧时,ID列暗示?(Merge many data frames from

2019-07-23 07:37发布

我想合并的一组数据帧一起(因为它似乎许多操作更容易,如果你只处理瓦特/一个,但纠正我,如果我错了)。

目前,我有这样一个数据帧:

ID, var1, var2
A,  2,    2
B,  4,    5
.
.
Z,  3,    2

每个ID是在同一行上瓦特/几个单次测量

我也有一个csv文件瓦特对于每个ID,像/重复测量:

文件名= ID_B.csv

time, var4, var5
0,    1,    2
1,    4,    5
2,    1,    6
...

我想的是:

ID, time, va1, var2, var4, var5
...
B,  0,    4,   5,    1,    2,
B,  1,    4,   5,    4,    5,
B,  2,    4,   5,    1,    6,
...

我真的不关心列的顺序。 我能想到的唯一的办法是ID列添加到每个csv文件,然后通过他们循环中调用merge()几次。 有没有更好的方法?

Answer 1:

我的理解是,你需要提取的文件名ID,然后合并与现有的数据框导入CSV。

df1 <- read.csv(textConnection("ID, var1, var2
A,  2,    2
B,  4,    5"))

# assuming the imported csv-files are in working directory
filenames <- list.files(getwd(), pattern = "ID_[A-Z].csv")

# extract ID from filename
ids <- gsub("ID_([A-Z]).csv", "\\1", filenames)

# import csv-files and append ID
library(plyr)
import <- mdply(filenames, read.csv)
import$ID <- ids[import$Var1]
import$Var1 <- NULL

# merge imported csv-files and the existing dataframe
merge(df1, import)  

结果:

ID var1 var2 time var4 var5
1  B    4    5    0    1    2
2  B    4    5    1    4    5
3  B    4    5    2    1    6


文章来源: Merge many data frames from csv files, when ID column is implied?