过滤从tibble中删除NA字符串或值

时间:2017-11-05 23:04:44

标签: r

这里我试图从一个tibble中删除NA值:

mc = as_tibble(c("NA" , NA , "ls", "test"))
mc <- filter(mc , is.na == TRUE)

但是返回错误:

> mc = as_tibble(c("NA" , NA , "ls", "test"))
> mc <- filter(mc , is.na == TRUE)
Error in filter_impl(.data, quo) : 
Evaluation error: comparison (1) is possible only for atomic and list types.

如何从此tibble中删除NA值?

3 个答案:

答案 0 :(得分:1)

尝试:

library(tidyverse)

mc %>% 
  mutate(value = replace(value, value == "NA", NA)) %>% 
  drop_na()

给出了:

# A tibble: 2 x 1
  value
  <chr>
1    ls
2  test

第二行将所有"NA"替换为真实<NA>。然后第三行删除所有<NA>值。

答案 1 :(得分:0)

@tyluRp和@danh给出的解决方案效果很好。

只想添加另一个具有优势的替代解决方案

  • 简单的代码
  • 更短-适用于像我这样的懒人:)

请参阅此单行代码:

mc %>% replace(. == "NA", NA) %>% na.omit

答案 2 :(得分:-1)

如果您只想删除实际NA值:

library(dplyr)
filter(mc, !is.na(value))

或者(这将检查所有列,而不仅仅是上面指定的列):

na.omit(mc)

如果要删除两个NA值,并且等于字符串&#34; NA&#34;:

library(dplyr)
filter(mc, !is.na(value), !value == "NA")