R 如何删除数据帧中包含NAs的行,但为某些行保留例外?

R 如何删除数据帧中包含NAs的行,但为某些行保留例外?,r,R,我的df大约有17000行(基因)和200列(患者),我需要删除包含NAs的基因,但其中12个对于我的分析很重要,所以我将删除所有对这12个基因中的任何一个有NA的患者,而不是删除它们 我该如何编写这样的代码?(很抱歉,找不到任何类似的问题)在你的问题中加入一个玩具示例以及你期望的结果总是好的。它可以帮助用户回答您的问题,而无需编写玩具示例。我做了一个小例子,有5个病人,5个重要基因和5个不太重要的基因 你可以分两步做你想做的事。首先,我们删除带有colSums和is.na的患者。换句话说,我们

我的df大约有17000行(基因)和200列(患者),我需要删除包含NAs的基因,但其中12个对于我的分析很重要,所以我将删除所有对这12个基因中的任何一个有NA的患者,而不是删除它们


我该如何编写这样的代码?(很抱歉,找不到任何类似的问题)

在你的问题中加入一个玩具示例以及你期望的结果总是好的。它可以帮助用户回答您的问题,而无需编写玩具示例。我做了一个小例子,有5个病人,5个重要基因和5个不太重要的基因

你可以分两步做你想做的事。首先,我们删除带有
colSums
is.na
的患者。换句话说,我们只计算重要基因行(行1:5)的每列
NA
s的数量。我们只保留
NA
s的数量为零的列。然后我们简单地做一个
na。省略
删除带有
na
s的基因

#Example data:
df1 <-data.frame(matrix(sample(letters,50,replace=TRUE),ncol=5))
colnames(df1) <-paste0("patient",1:5)
rownames(df1) <-c(paste0("important",1:5),paste0("lessimportant",6:10))
df1[2,4] <-NA;df1[7,1] <-NA;df1[9,5] <-NA #add NA for example

df1
                patient1 patient2 patient3 patient4 patient5
important1             m        f        d        t        m
important2             t        v        j     <NA>        d
important3             s        n        h        t        p
important4             h        h        t        n        i
important5             x        t        c        r        p
lessimportant6         y        f        b        a        h
lessimportant7      <NA>        o        h        n        a
lessimportant8         o        g        o        l        x
lessimportant9         m        p        f        d     <NA>
lessimportant10        n        a        h        u        a

#to remove NAs according to your specifications
df1 <-df1[,colSums(is.na(df1[1:5,]))==0] # remove patients with NA in important genes
df1 <-na.omit(df1) #remove genes with NA

#result
df1
                patient1 patient2 patient3 patient5
important1             m        f        d        m
important2             t        v        j        d
important3             s        n        h        p
important4             h        h        t        i
important5             x        t        c        p
lessimportant6         y        f        b        h
lessimportant8         o        g        o        x
lessimportant10        n        a        h        a
#示例数据:

df1 na.omit函数可能很有用。对-但我如何将其应用于17000行(12个特定行除外)?也许可以为12个患者创建一个子集作为新的数据帧。第二组没有12名患者。将na.omit应用于第二个数据帧以生成第三个数据帧。然后,使用cbind组合第一个和第三个数据帧。因为您没有提供示例数据集,所以其他人很难提供解决方案。