gpt4 book ai didi

r - 在 R 中合并数据框

转载 作者:行者123 更新时间:2023-12-04 02:03:18 25 4
gpt4 key购买 nike

嗨,我有很多 CSV 文件要处理。每个文件都是由算法运行生成的。
我的数据总是有一个键和一个这样的值:

csv1:

        index value
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1

csv2:
      index value
1 4 3
2 5 3
3 6 3
4 7 3
5 8 3

现在我想聚合这些 CSV 数据,如下所示:

当两个文件都包含相同的 key 时,例如5,结果行应包含两个文件共享的键 (5) 和两个值的平均值 ((1+3)/2 = 2)。如果只有一个文件包含一个键(例如 2),则该行仅添加到结果表中(键 = 2,值 = 1)。

像这样的东西:
      index value
1 1 1
2 2 1
3 3 1
4 4 2 (as (1+4)/2 = 2)
5 5 2 (as (1+4)/2 = 2)
6 6 3
7 7 3
8 8 3

一开始我以为 rbind()完成这项工作,但它不会聚合值,只会连接数据。我怎样才能用 R 实现这一目标?

最佳答案

这是一个解决方案。到目前为止,我正在关注所有出色的评论,并希望通过向您展示如何处理任意数量的文件来增加值(value)。我假设您的所有 csv 文件都在同一目录中(下面的 my.csv.dir)。

# locate the files
files <- list.files(my.csv.dir)

# read the files into a list of data.frames
data.list <- lapply(files, read.csv)

# concatenate into one big data.frame
data.cat <- do.call(rbind, data.list)

# aggregate
data.agg <- aggregate(value ~ index, data.cat, mean)

编辑:在下面的评论中处理您更新的问题:
files     <- list.files(my.csv.dir)
algo.name <- sub("-.*", "", files)
data.list <- lapply(files, read.csv)
data.list <- Map(transform, data.list, algorithm = algo.name)
data.cat <- do.call(rbind, data.list)
data.agg <- aggregate(value ~ algorithm + index, data.cat, mean)

关于r - 在 R 中合并数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com