Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 有没有办法删除不包含所有数值的数据行?_R_Numeric_Data Cleaning - Fatal编程技术网

R 有没有办法删除不包含所有数值的数据行?

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中使用它来删

我有两列的数据。每一列数据中都有数值,但其中一些没有任何数值。我想删除没有所有数值的行。实际上,数据有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中使用它来删除行

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。