R 有没有办法删除不包含所有数值的数据行?
我有两列的数据。每一列数据中都有数值,但其中一些没有任何数值。我想删除没有所有数值的行。实际上,数据有1000行,但为了简化,我在这里制作了较小的数据文件。谢谢R 有没有办法删除不包含所有数值的数据行?,r,numeric,data-cleaning,R,Numeric,Data Cleaning,我有两列的数据。每一列数据中都有数值,但其中一些没有任何数值。我想删除没有所有数值的行。实际上,数据有1000行,但为了简化,我在这里制作了较小的数据文件。谢谢 a <- c(1, 2, 3, 4, "--") b <- c("--", 2, 3, "--", 5) data <- data.frame(a, b) 一个更简单的选项是在使用as.numeric转换为数值后检查NA。如果元素不是数字,则返回NA,并且可以用is.NA检测到,并在filter_all中使用它来删
a <- c(1, 2, 3, 4, "--")
b <- c("--", 2, 3, "--", 5)
data <- data.frame(a, b)
一个更简单的选项是在使用as.numeric转换为数值后检查NA。如果元素不是数字,则返回NA,并且可以用is.NA检测到,并在filter_all中使用它来删除行
library(dplyr)
data %>%
filter_all(all_vars(!is.na(as.numeric(.))))
# a b
#1 2 2
#2 3 3
如果我们不喜欢这些警告,一个选项是通过使用str_detect检查字符串的一个或多个数字[0-9.]+来检测regex中的numbers-only元素,包括从开始^到结束$的点
如果我们只有-作为非数字,则更容易删除
data[!rowSums(data == "--"),]
# a b
#2 2 2
#3 3 3
数据
一个更简单的选项是在使用as.numeric转换为数值后检查NA。如果元素不是数字,则返回NA,并且可以用is.NA检测到,并在filter_all中使用它来删除行
library(dplyr)
data %>%
filter_all(all_vars(!is.na(as.numeric(.))))
# a b
#1 2 2
#2 3 3
如果我们不喜欢这些警告,一个选项是通过使用str_detect检查字符串的一个或多个数字[0-9.]+来检测regex中的numbers-only元素,包括从开始^到结束$的点
如果我们只有-作为非数字,则更容易删除
data[!rowSums(data == "--"),]
# a b
#2 2 2
#3 3 3
数据
一个基本R选项可以是:
data[!is.na(Reduce(`+`, lapply(data, as.numeric))), ]
a b
2 2 2
3 3 3
对于导入数据,使用stringsAsFactors=FALSE
或使用sapply:
一个基本R选项可以是:
data[!is.na(Reduce(`+`, lapply(data, as.numeric))), ]
a b
2 2 2
3 3 3
对于导入数据,使用stringsAsFactors=FALSE
或使用sapply:
在您的示例中,所有行都至少有一个数值。您的意思是所有值都必须是数字吗?-@tmfmnk,是的,所有值都必须是数字。在您的示例中,所有行都至少有一个数字值。你是说所有值都必须是数字吗?-@tmfmnk,是的,所有值都必须是数字。@tmfmnk,我运行了代码,结果是一样的。但是我使用了你使用的所有过滤函数,它工作正常。谢谢:-筛选所有数据、所有变量。!=-@Nini您可能需要更新数据,即数据%filter\u allall\u vars!is.naas.numeric@tmfmnk,我运行了代码,结果是一样的。但是我使用了你使用的所有过滤函数,它工作正常。谢谢:-筛选所有数据、所有变量。!=-@Nini您可能需要更新数据,即数据%filter\u allall\u vars!is.naas.numeric。