在 Excel 文件导入 R 期间,非 NA 值被替换为 NA

问题描述 投票:0回答:1

我有一个 excel 文件,我已使用

read_excel
将其导入到 R 中。 Excel 文件包含约 8000 多条记录,共 58 列。有许多具有 NA 值的单元格。在不同的变量中,它们可以输入为“n/a”、“N/A”、“n/A”、“N/a”、“na”、“NA”、“n a”、“(空白) ”.

当我导入文件时,我使用以下代码:

read_excel("path", col_names = TRUE, na = c("n/a", "N/A", "n/A", "N/a","na","NA", "n a",""))

在一列中,我有具有此值

NR
的记录,它代表“无记录”,与
NA
不同。

当我运行上面的

read_excel
代码时,
NR
变成了
NA
。如果我取出
na = c("n/a", "N/A", "n/A", "N/a","na","NA", "n a","")
部分,则
NR
会按预期导入。如何让 R 认识到
NR
不是同一件事?作为旁注,我无法将
NR
符号更改为其他内容。

r import-from-excel
1个回答
0
投票

您可以尝试这样的方法来解决问题:

### Packages
library(dplyr)
library(stringr)

### Load your data with all columns typed to character
### which should preserved the NR value. Blank cells will be automatically converted to NA
NA_ <- read_excel("C:/Users/your_name/Downloads/NA.xlsx",
                  col_names = TRUE,
                  col_types ='text')

NA_数据框:

# A tibble: 4 × 5
  Prenom Nom     Values Ville       Record
  <chr>  <chr>   <chr>  <chr>       <chr> 
1 Jean   N/a     1      Paris       1     
2 n/a    Dupond  2      NA          3     
3 N/A    na      NA     Montpellier 4     
4 Marc   Spencer n a    NA          NR  

是时候将所有形式的 n/a,N/A,... 转换为真正的 NA :

### Replace NA values with real NA using a regex
### Change afterwards the type of one or more columns if needed
NA_ %>% mutate(across(everything(),~str_replace(.x,"(?i)\\b(n\\s*\\/?\\s*a)\\b",NA_character_)),
               Values=as.numeric(Values))

输出:

# A tibble: 4 × 5
  Prenom Nom     Values Ville       Record
  <chr>  <chr>    <dbl> <chr>       <chr> 
1 Jean   NA           1 Paris       1     
2 NA     Dupond       2 NA          3     
3 NA     NA          NA Montpellier 4     
4 Marc   Spencer     NA NA          NR  
© www.soinside.com 2019 - 2024. All rights reserved.