相关疑难解决方法(0)

删除data.frame中包含全部或部分NA(缺失值)的行

我想删除此数据框中的行:

a)包含NA所有列的s.下面是我的示例数据框.

             gene hsap mmul mmus rnor cfam
1 ENSG00000208234    0   NA   NA   NA   NA
2 ENSG00000199674    0   2    2    2    2
3 ENSG00000221622    0   NA   NA   NA   NA
4 ENSG00000207604    0   NA   NA   1    2
5 ENSG00000207431    0   NA   NA   NA   NA
6 ENSG00000221312    0   1    2    3    2
Run Code Online (Sandbox Code Playgroud)

基本上,我想获得如下的数据框.

             gene hsap mmul mmus rnor cfam
2 ENSG00000199674    0   2    2    2    2
6 ENSG00000221312    0   1    2    3    2
Run Code Online (Sandbox Code Playgroud)

b)只在某些列中包含NAs …

r filter missing-data dataframe r-faq

792
推荐指数
15
解决办法
139万
查看次数

删除R矩阵中所有数据均为NA的行

可能重复:
删除R中数据文件的空行

如何从矩阵或数据框中删除行,其中行中的所有元素都是NA?

所以要从中得到:

     [,1] [,2] [,3]
[1,]    1    6   11
[2,]   NA   NA   NA
[3,]    3    8   13
[4,]    4   NA   NA
[5,]    5   10   NA
Run Code Online (Sandbox Code Playgroud)

对此:

     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    3    8   13
[3,]    4   NA   NA
[4,]    5   10   NA
Run Code Online (Sandbox Code Playgroud)

因为na.omit的问题是它删除了任何 NAs的行,所以会给我这个:

     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    3    8   13
Run Code Online (Sandbox Code Playgroud)

到目前为止我能做的最好的是使用apply()函数:

> x[apply(x, 1, function(y) !all(is.na(y))),]
     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    3    8   13 …
Run Code Online (Sandbox Code Playgroud)

r

38
推荐指数
2
解决办法
7万
查看次数

使用dplyr删除所有变量都为NA的行

我在看似简单的任务时遇到了一些问题:删除所有变量都NA使用dplyr的所有行.我知道可以使用基本R(删除R矩阵中的所有数据为NA删除R中数据文件的空行)来完成,但我很想知道是否有一种简单的方法可以使用dplyr .

例:

library(tidyverse)
dat <- tibble(a = c(1, 2, NA), b = c(1, NA, NA), c = c(2, NA, NA))
filter(dat, !is.na(a) | !is.na(b) | !is.na(c))
Run Code Online (Sandbox Code Playgroud)

filter上面的调用做了我想要的但是在我面临的情况下它是不可行的(因为有大量的变量).我想可以通过使用filter_并首先使用(长)逻辑语句创建一个字符串来实现它,但似乎应该有一个更简单的方法.

另一种方法是使用rowwise()do():

na <- dat %>% 
  rowwise() %>% 
  do(tibble(na = !all(is.na(.)))) %>% 
  .$na
filter(dat, na)
Run Code Online (Sandbox Code Playgroud)

但这看起来并不太好,虽然它完成了工作.其他想法?

r dplyr tidyverse

23
推荐指数
6
解决办法
1万
查看次数

R中这个尾随逗号的目的是什么?

为什么第一行工作而第二行不工作?我在文档中找不到如何使用哪个来选择数据的原因虽然我偶然发现我需要一个逗号.

sigData <- data[which(abs(data$wc2) > 3*wc2_sd),]


sigData <- data[which(abs(data$wc2) > 3*wc2_sd)]
Run Code Online (Sandbox Code Playgroud)

r

10
推荐指数
1
解决办法
3740
查看次数

为什么不存在的data.frame列中的项目分配有效?

灵感来自Q6437164:有人可以向我解释为什么以下工作:

iriscopy<-iris #or whatever other data.frame
iriscopy$someNonExistantColumn[1]<-15
Run Code Online (Sandbox Code Playgroud)

对我而言,似乎并不明白R如何将此语句解释为:someNonExistantColumn在data.frame中创建一个名为new的新列,并将第一个值(实际上是所有值,如图所示)设置为值15.

r

7
推荐指数
1
解决办法
597
查看次数

从数据框中选择任何变量不是NA的行

可能重复:
删除R中数据文件的空行

假设我有一个数据帧 df

我想从中选择行,其中行中的任何变量都不是NA.也就是说我只想排除所有变量所在的行NA

r

6
推荐指数
1
解决办法
1万
查看次数

如何仅删除在 R 中全部为 NA 的行?

我有一个数据框,其中只有一些行全部为 NA。如何遍历并删除所有这些行?我试过 na.omit() 但这不起作用。在这个例子中,我需要删除第 3 行和第 5 行

x1 <- c("Bob", "Mary","","Jane","")
x2 <- c("Bob","Mary","","Jane","")
x3 <- c("Bob", "Mary","","Jane","")
x4 <- c("Bob","Mary","","Jane","")

df <- data.frame(x1,x2,x3,x4)

df <- df %>% na.omit()
Run Code Online (Sandbox Code Playgroud)

loops r na

2
推荐指数
1
解决办法
6044
查看次数

标签 统计

r ×7

dataframe ×1

dplyr ×1

filter ×1

loops ×1

missing-data ×1

na ×1

r-faq ×1

tidyverse ×1