首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将<NA>替换为NA

将<NA>替换为NA
EN

Stack Overflow用户
提问于 2014-10-07 00:46:54
回答 3查看 14.9K关注 0票数 4

我有一个包含条目的数据框;由于is.na返回FALSE,因此这些值似乎没有被视为NA。我想将这些值转换为NA,但找不到方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-07 03:03:19

这可能成为问题的两个类别是字符和因素。这应该在dtaframe上循环,并将"NA“值转换为真正的<NA>,但只针对这两个类:

代码语言:javascript
复制
make.true.NA <- function(x) if(is.character(x)||is.factor(x)){
                                  is.na(x) <- x=="NA"; x} else {
                                  x}
df[] <- lapply(df, make.true.NA)

(在没有数据示例的情况下未进行测试。)使用form:df_name[]将尝试保留原始数据帧的结构,否则将丢失其类属性。我发现ujjwal认为您的NA拼写包含"<>“字符,因此您可以尝试使用更通用的函数:

代码语言:javascript
复制
make.true.NA <- function(x) if(is.character(x)||is.factor(x)){
                                  is.na(x) <- x %in% c("NA", "<NA>"); x} else {
                                  x}
票数 3
EN

Stack Overflow用户

发布于 2014-10-07 03:25:56

使用dfr[dfr=="<NA>"]=NA,其中dfr是您的数据帧。

例如:

代码语言:javascript
复制
> dfr<-data.frame(A=c(1,2,"<NA>",3),B=c("a","b","c","d"))

> dfr
     A  B
1    1  a
2    2  b
3 <NA>  c
4    3  d

> is.na(dfr)
         A     B
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] FALSE FALSE
[4,] FALSE FALSE

> dfr[dfr=="<NA>"] = NA                 **key step**

> is.na(dfr)
         A     B
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,]  TRUE FALSE
[4,] FALSE FALSE
票数 4
EN

Stack Overflow用户

发布于 2018-01-19 11:34:11

您也可以使用replace_with_na和相关函数对naniar包执行此操作。

代码语言:javascript
复制
dfr <- data.frame(A = c(1, 2, "<NA>", 3), B = c("a", "b", "c", "d"))

library(naniar)
# dev version - devtools::install_github('njtierney/naniar')
is.na(dfr)
#>          A     B
#> [1,] FALSE FALSE
#> [2,] FALSE FALSE
#> [3,] FALSE FALSE
#> [4,] FALSE FALSE

dfr %>% replace_with_na(replace = list(A = "<NA>")) %>% is.na()
#>          A     B
#> [1,] FALSE FALSE
#> [2,] FALSE FALSE
#> [3,]  TRUE FALSE
#> [4,] FALSE FALSE

# You can also specify how to do this for many variables

dfr %>% replace_with_na_all(~.x == "<NA>")
#> # A tibble: 4 x 2
#>       A     B
#>   <int> <int>
#> 1     2     1
#> 2     3     2
#> 3    NA     3
#> 4     4     4

您可以阅读有关使用replace_with_na here的详细信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26220913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档