我有一个文件夹,里面有几百个 .csv 文件,我想导入和合并。每个文件包含两列数据,但行数不同,行的名称也不同。列没有名称(为此,假设它们被命名为x
和y
)。
我怎样才能将这些合并在一起?我只想将x
列并排地粘在一起,而不是根据任何条件进行匹配,以便第一行在所有数据集中匹配,空行被赋予 NA。我想让专栏x
消失。虽然,行应该保持它们最初在 csv 中的顺序。
下面是一个例子:
Data frame 112_c1.csv:
x y
1 -0.5604
3 -0.2301
4 1.5587
5 0.0705
6 0.1292
Dataframe 112_c2.csv:
x y
2 -0.83476
3 -0.82764
8 1.32225
9 0.36363
13 0.9373
42 -1.5567
50 -0.12237
51 -0.4837
Dataframe 113_c1.csv:
x y
5 1.5783
6 0.7736
9 0.28273
15 1.44565
23 0.999878
29 -0.223756
=
Desired result
112_c1.y 112_c2.y 113_c1.y
-0.5604 -0.83476 1.5783
-0.2301 -0.82764 0.7736
1.5587 1.32225 0.28273
0.0705 0.36363 1.44565
0.1292 0.9373 0.999878
NA -1.5567 -0.223756
NA -0.12237 -0.223756
NA -0.12237 NA
NA -0.4837 NA
我尝试了一些事情,并查看了许多其他线程。但是像下面这样的代码只是为任何以下列生成 NA:
df <- do.call(rbind.fill, lapply(list.files(pattern = "*.csv"), read.csv))
另外,如果我使用rbind
而不是rbind.fill
我得到错误,names do not match previous names
我不确定如何规避这个匹配标准。
在加载数据时使用函数计算汇总统计数据的建议解决方案:
readCalc <- function(file_path) {
df <- read.csv(file_path)
return(data.frame(file=file_path,
column = names(df),
averages = apply(df, 2, mean),
N = apply(df, 2, length),
min = apply(df, 2, min),
stringsAsFactors = FALSE, row.names = NULL))
}
df <- do.call(rbind, lapply(list.files(pattern = "*.csv"), readCalc))
如果我们需要第一个或最后一个值,我们可以使用dplyr::first
, dplyr::last
。我们甚至可能想将整个向量存储在某个列表中,但如果我们只需要汇总统计信息,我们可能甚至不需要它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句