相关疑难解决方法(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中删除数据文件的空行

我有一个空行的数据集.我想删除它们:

myData<-myData[-which(apply(myData,1,function(x)all(is.na(x)))),]
Run Code Online (Sandbox Code Playgroud)

它运作正常.但是现在我想在我的数据中添加一个列并初始化第一个值:

myData$newCol[1] <- -999

Error in `$<-.data.frame`(`*tmp*`, "newCol", value = -999) : 
  replacement has 1 rows, data has 0
Run Code Online (Sandbox Code Playgroud)

不幸的是它不起作用,我不明白为什么,我无法解决这个问题.当我使用以下方法一次删除一行时,它工作正常:

TgData = TgData[2:nrow(TgData),]
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

当我只使用前13000行时,它也可以工作.

但它不适用于我的实际数据,有32.000行.

我做错了什么?这对我来说似乎毫无意义.

r

67
推荐指数
4
解决办法
13万
查看次数

删除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万
查看次数

如何过滤掉特定列全部为na的位置

这是一个示例数据集:

id <- c("Item1","Item2","Item3","Item4","Item5","Item6")
var1 <- c(2,3,NA,NA,5,6)
var2 <- c(NA,3,5,NA,5,NA)
var3 <- c(NA,3,4,NA,NA,6)
test <- data.frame(id, var1, var2, var3)
Run Code Online (Sandbox Code Playgroud)

我想过滤掉 var1、var2 和 var3 都是 na 的地方。我知道可以这样做:

test1 <- test %>% filter(!(is.na(var1) & is.na(var2) & is.na(var3)))
test1

     id var1 var2 var3
1 Item1    2   NA   NA
2 Item2    3    3    3
3 Item3   NA    5    4
4 Item5    5    5   NA
5 Item6    6   NA    6
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

r filter dataframe dplyr

4
推荐指数
1
解决办法
1360
查看次数

标签 统计

r ×4

dataframe ×2

filter ×2

dplyr ×1

missing-data ×1

r-faq ×1