首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据栏R中删除NA

从数据栏R中删除NA
EN

Stack Overflow用户
提问于 2022-09-22 15:00:18
回答 3查看 43关注 0票数 2

我有一个名为Resultaat的数据格式

代码语言:javascript
复制
Cluster Number
W63     1020 NA NA NA 1100
W50     1020 NA 1240 NA NA

我要删除所有NA值,以保留数字。列被定义为字符。

预期产出

代码语言:javascript
复制
Cluster Number
W63     1020 1100
W50     1020 1240 

我试过像gsub("^NA(?:\\s+NA)*\\b\\s*|\\s*\\bNA(?:\\s+NA)*$", "", Resultaat$Number)Resultaat <- Resultaat[!is.na(Resultaat)]这样的东西,但是没有什么效果

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-09-22 15:03:42

这里有一个选项--用read.tableunite读取列'Number‘所有的列,不包括带na.rm = TRUENA元素

代码语言:javascript
复制
library(tidyr)
library(dplyr)
read.table(text = Resultaat$Number, header = FALSE, fill = TRUE) %>% 
  unite(Number, everything(), na.rm = TRUE, sep = " ") %>% 
  bind_cols(Resultaat[1], .)

-output

代码语言:javascript
复制
Cluster    Number
1     W63 1020 1100
2     W50 1020 1240

关于gsub,它可以是

代码语言:javascript
复制
gsub("\\s+NA|NA\\s+|NA$|^NA", "", Resultaat$Number)
[1] "1020 1100" "1020 1240"

也可以使用tidvyerse方法作为

代码语言:javascript
复制
library(dplyr)
library(tidyr)
library(stringr)
Resultaat %>%
   separate_rows(Number) %>% 
   na_if("NA") %>%
   drop_na() %>%
   group_by(Cluster) %>%
   summarise(Number = str_c(Number, collapse = " "))

-output

代码语言:javascript
复制
# A tibble: 2 × 2
  Cluster Number   
  <chr>   <chr>    
1 W50     1020 1240
2 W63     1020 1100

数据

代码语言:javascript
复制
Resultaat <- structure(list(Cluster = c("W63", "W50"), 
Number = c("1020 NA NA NA 1100", 
"1020 NA 1240 NA NA")), class = "data.frame", row.names = c(NA, 
-2L))
票数 3
EN

Stack Overflow用户

发布于 2022-09-22 15:17:16

假设所有数字和NAs是分隔的:

代码语言:javascript
复制
library("tidyverse")

Resultaat$Number <- Resultaat$Number %>% 
  str_split(pattern = " ") %>% 
  map_chr(~ paste(.x[.x != "NA"], collapse = " "))
票数 0
EN

Stack Overflow用户

发布于 2022-09-22 20:25:40

下面是带有模式regmatches的基本R选项

代码语言:javascript
复制
transform(
  df,
  Number = sapply(
    regmatches(
      Number,
      gregexpr("[^(NA) ]+", Number)
    ),
    paste0,
    collapse = " "
  )
)

这给

代码语言:javascript
复制
  Cluster    Number
1     W63 1020 1100
2     W50 1020 1240
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73816863

复制
相关文章

相似问题

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