我有一个名为 Resultaat 的数据框
Cluster Number
W63 1020 NA NA NA 1100
W50 1020 NA 1240 NA NA
我想删除所有 NA 值并保留数字。列被定义为字符。
预期输出
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)]
但没有任何效果
最佳答案
这里有一个选项 - 使用 read.table
读取“Number”列,并使用 unite
所有列(不包括 NA
元素) na.rm = TRUE
library(tidyr)
library(dplyr)
read.table(text = Resultaat$Number, header = FALSE, fill = TRUE) %>%
unite(Number, everything(), na.rm = TRUE, sep = " ") %>%
bind_cols(Resultaat[1], .)
-输出
Cluster Number
1 W63 1020 1100
2 W50 1020 1240
关于gsub
,可以是
gsub("\\s+NA|NA\\s+|NA$|^NA", "", Resultaat$Number)
[1] "1020 1100" "1020 1240"
或者也可以使用 tidvyerse
方法作为
library(dplyr)
library(tidyr)
library(stringr)
Resultaat %>%
separate_rows(Number) %>%
na_if("NA") %>%
drop_na() %>%
group_by(Cluster) %>%
summarise(Number = str_c(Number, collapse = " "))
-输出
# A tibble: 2 × 2
Cluster Number
<chr> <chr>
1 W50 1020 1240
2 W63 1020 1100
数据
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))
关于从数据框 R 列中删除 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73816863/