我有6个csv文件,其中包含3列,我想获取每个文件中每一列的最大值,并将其放入已经创建的另一个新数据框中
我创建了一个数据框和一个for boucle,以读取所有csvs并提取所需的数据。我执行代码时出现的问题,他用所有列中最后一个csv文件的值填充了数据框
Maxx Maxy Maxz
1 -5.975904 7.614458 3.53012
2 -5.975904 7.614458 3.53012
3 -5.975904 7.614458 3.53012
4 -5.975904 7.614458 3.53012
5 -5.975904 7.614458 3.53012
6 -5.975904 7.614458 3.53012
f <- data.frame(matrix(NA,ncol = 3, nrow = 6))
colnames(f) <- c("Maxx","Maxy","Maxz")
head(f)
a <- list.files(pattern = ".csv")
for (i in a)
{
b <- read.csv(i)
j <- i
for (j in 1:6) {
f[j,1] <- max(as.numeric(as.character(b$X)), na.rm=TRUE)
f[j,2] <- max(as.numeric(as.character(b$X.1)), na.rm=TRUE)
f[j,3] <- max(as.numeric(as.character(b$X.2)), na.rm=TRUE)
}
}
head(f)
Maxx Maxy Maxz
1 -5.975904 7.614458 3.53012
2 -5.975904 7.614458 3.53012
3 -5.975904 7.614458 3.53012
4 -5.975904 7.614458 3.53012
5 -5.975904 7.614458 3.53012
6 -5.975904 7.614458 3.53012
我希望表具有相同的结构,具有18个不同值,对于每个文件和列,都具有适当的值。预先感谢
答案 0 :(得分:0)
我们可以循环浏览a
中的文件,读取它们,为每一列查找最大值并将所有文件的结果绑定在一起。
do.call(rbind, lapply(a, function(x) {
df <- read.csv(x)
sapply(df, max, na.rm = TRUE)
}))
其中
a <- list.files(pattern = ".csv")