【问题标题】:getting error for "NA" values while reading file using read_csv() using tiddyverse使用 tiddyverse 使用 read_csv() 读取文件时出现“NA”值错误
【发布时间】:2021-11-19 17:09:54
【问题描述】:

我正在尝试读取一个文件,其中一列通常包含双精度值,但当值为中性时,它的值是“Calm”。因此,当我阅读文件时,我使用的是na = "Calm | calm",而在col_types = cols() 内部,我正在使用'9am wind speed (km/h)' = col_double() 解析列,下面是我制作小标题的函数。

generate_tibble <- function(filename) {
    temp_tibble <- read_csv(
            paste0("./data/", filename),
            na = c('calm',"Calm"),
            skip = 7,
            col_types = cols(
               'Date' = col_date(format = "%d/%m/%Y"),
               'Evaporation (mm)' = col_double(),
               'Sunshine (hours)' = col_double(),
               '9am wind speed (km/h)' = col_double()
               )
            )
    }

之后,我像这样读取了我的第一个文件:main_df &lt;- generate_tibble(file_names[1]),我将使用列名与该文件合并其他文件。所以我使用以下代码运行循环。

for (i in file_names[2:length(file_names)]) {
  temp <- generate_tibble(i)
  main_df <- rbind(main_df, temp)
  print(paste("FINISHED PARSING:", i))
}

但是当我运行循环时,我会得到这样的错误:

当我运行 problems(main_df) 时,它会显示以下消息:

我应该怎么做才能解决这个问题?提前致谢。

【问题讨论】:

  • 根据 problems(main_df) 中显示的内容,您可以手动检查(例如)第 2 行第 5 列中的内容。看起来它是 "" 这不是双精度数。您可以将其添加到na =
  • 旁注,您的循环没有有效地分配内存。 evodify.com/r-loops-are-slow

标签: r tidyverse na data-wrangling readr


【解决方案1】:

您可以尝试在读取文件后进行格式化,而不是尝试在 read_csv 中键入设置和处理。这是您的函数的整洁版本

generate_tibble <- function(filename) {

 temp_tibble <- read_csv(file.path(".","data","filename")) %>%
                mutate('Date' = col_date(format = "%d/%m/%Y"),
               'Evaporation (mm)' = col_double(),
               'Sunshine (hours)' = col_double(),
               '9am wind speed (km/h)' = col_double())

}

当您强制列为数字时,所有字符串值都应转换为 NA。因此,您不需要指定“Calm”。 file.path() 函数用于文件路径,以便 Linux 和 Windows 用户都可以使用您的代码。

之后我建议使用 lapply() 函数而不是循环并使用 data.table::rbindlist() 绑定 lapply 的产品

https://www.datacamp.com/community/tutorials/r-tutorial-apply-family?utm_source=adwords_ppc&utm_campaignid=12492439679&utm_adgroupid=122563408041&utm_device=c&utm_keyword=apply%20family%20r&utm_matchtype=b&utm_network=g&utm_adpostion=&utm_creative=504158803141&utm_targetid=aud-522010995285:kwd-614516587376&utm_loc_interest_ms=&utm_loc_physical_ms=9028709&gclid=Cj0KCQjw18WKBhCUARIsAFiW7JzR0Avzz054y2tx2b1Sx7hZOEGHMRxfNdmgodVnzh9fqNUyg5JsAz4aAvvyEALw_wcB#codelapplycode

【讨论】:

    猜你喜欢
    • 2016-06-02
    • 2020-10-11
    • 2021-12-31
    • 2013-07-07
    • 2016-02-07
    • 2023-03-03
    • 1970-01-01
    • 2021-05-31
    • 2016-02-22
    相关资源
    最近更新 更多