首页 > 解决方案 > 如何计算每个 csv 数据帧列表的平均值

问题描述

我有 30 多个 csv 文件,它们具有相同数量的列和行以及相同的名称标题。我正在尝试计算每个文件的其中一列的平均值,并将它们放入一个新文件中,其中包含我的每个 csv 文件名和计算的平均值。这就是我的数据的样子: 数据

我使用过列表文件:

estaciones <- list.files(path = "D:/A/",
                            recursive = T, pattern = "PRCPTOT.csv", full.names = T)

然后我阅读了csv的使用:

estaciones = lapply(estaciones, read.csv)

我还需要将 -99-9 值更改为 NA,但下一个代码行似乎无法正常工作:

lapply(estaciones, function(prcptot) {prcptot[prcptot ==-99.9] <- NA; return(prcptot)})

当我看到我的数据时,它似乎已经进行了替换,但是当我尝试使用以下代码计算平均值时,我得到了每个数据帧的 NA 值。

apply(estaciones, mean)

如何正确替换我所有文件的值,计算每个数据框的平均值并使用每个 csv 文件的计算平均值和各自的名称创建一个新文件?谢谢

标签: rlistdataframecsvreplace

解决方案


尝试这样做

l <- split(mtcars, mtcars$vs)

l_split <- lapply(l, function(x) {x$cyl[x$cyl == 6] <- NA; x})

sapply(l_split, function(x) apply(x, 2, mean, na.rm = T))
#>                0          1
#> mpg   16.6166667  24.557143
#> cyl    7.7333333   4.000000
#> disp 307.1500000 132.457143
#> hp   189.7222222  91.357143
#> drat   3.3922222   3.859286
#> wt     3.6885556   2.611286
#> qsec  16.6938889  19.333571
#> vs     0.0000000   1.000000
#> am     0.3333333   0.500000
#> gear   3.5555556   3.857143
#> carb   3.6111111   1.785714

reprex 包创建于 2021-07-13 (v2.0.0 )


推荐阅读