如何处理多个csv文件以识别R中的空值?

juzqafwq  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(84)

我有各种.csv文件。每个文件都有多个列。我在R中使用给定的代码来进行质量检查,即对于特定列,有多少行具有有效值,多少行为空。代码对于单个csv文件运行良好。但是我想运行所有csv文件的代码,并且需要每个csv文件的输出。另外,我需要一个日志文件。任何人都可以请帮助我修改代码如何可以用来处理各种csv文件。

install.packages("readr") 
library(readr)

check_column <- function(df, column) {
  valid_values <- !is.na(df[[column]])
  num_valid <- sum(valid_values)
  num_null <- nrow(df) - num_valid
  return(c(num_valid, num_null))
}

#Read the CSV file
df <- read_csv("data.csv")

for (column in names(df)) {
  results <- check_column(df, column)
  print(paste(column, ": ", results[1], " valid, ", results[2], " null"))
}

字符串
样本数据:(并非所有文件都具有相同的列数)
Csv1.csv

D_T  Temp (°C)  Press (Pa)  ...
2021-03-01 00:00:00+00  28  1018  ...
2021-03-02 00:00:00+00  27  1017  ...
2021-03-03 00:00:00+00  28  1019  ...
..
..


Csv2.csv

D_T  Temp (°C)  Vel (m/s)  Press (Pa_...
2022-03-01 00:00:00+00  28  118  1018  ...
2022-03-02 00:00:00+00  27  117  1019  ...
2022-03-03 00:00:00+00  28  119  1018  ...
..
..

np8igboo

np8igboo1#

这样的怎么样?这不会在变量中存储任何内容。如果你需要帮助就告诉我。

library(readr)    
    
for(files in list.files(pattern=".*csv$")) {
    file <- read_csv(files)
    out <- file(paste0(files, ".log"), open = "w")
    sapply(colnames(file), function(x) {
            cat(
                    paste0(x, ":"),
                    sum(!is.na(file[, x])),
                    "valid,",
                    sum(is.na(file[, x])),
                    "null\n",
                    file = out
            )
    })
    close(out)
}

字符串
只写入一个文件:

library(readr)    

out <- file("output.log", open = "w")
for(files in list.files(pattern=".*csv$")) {
        file <- read_csv(files)
        cat(files, "\n", file = out)
        sapply(colnames(file), function(x) {
                cat(
                        paste0(x, ":"),
                        sum(!is.na(file[, x])),
                        "valid,",
                        sum(is.na(file[, x])),
                        "null\n",
                        file = out
                )
        })   
}
close(out)

相关问题