R 有条件地删除缺少数据的行

R 有条件地删除缺少数据的行,r,dataframe,na,boolean-logic,R,Dataframe,Na,Boolean Logic,我有一个数据框,其中缺少一些值,显示为NA 例如: V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 1 4 3 6 7 2 1 2 3 4 1 2 5 5 4 3 2 1 3 7 6 7 3 6 6 NA NA NA NA NA NA NA NA 4 5 2 2 1 7 NA NA NA NA NA 5 7 NA NA NA NA NA NA NA NA NA 我想删除包含至少80

我有一个数据框,其中缺少一些值,显示为NA

例如:

     V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1    4  3  6  7  2  1  2  3  4   1
2    5  5  4  3  2  1  3  7  6   7  
3    6  6  NA NA NA NA NA NA NA NA
4    5  2  2  1  7  NA NA NA NA NA
5    7  NA NA NA NA NA NA NA NA NA
我想删除包含至少80%缺失数据的行。在本例中,它显然是第3行和第5行。我知道如何手动删除行,但我希望获得代码方面的帮助,因为我的原始数据框包含480个变量和1000多行,因此自动识别和删除数据大于80%NA的行的代码将非常有用


提前感谢您

您可以使用
rowMeans

df = read.table(text='     V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1    4  3  6  7  2  1  2  3  4   1
                2    5  5  4  3  2  1  3  7  6   7  
                3    6  6  NA NA NA NA NA NA NA NA
                4    5  2  2  1  7  NA NA NA NA NA
                5    7  NA NA NA NA NA NA NA NA NA')

df[rowMeans(is.na(df))<.8,]

希望这有帮助

您可以使用
rowMeans

df = read.table(text='     V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1    4  3  6  7  2  1  2  3  4   1
                2    5  5  4  3  2  1  3  7  6   7  
                3    6  6  NA NA NA NA NA NA NA NA
                4    5  2  2  1  7  NA NA NA NA NA
                5    7  NA NA NA NA NA NA NA NA NA')

df[rowMeans(is.na(df))<.8,]

希望这有帮助

我们可以在逻辑矩阵上使用
行和

df1[rowSums(is.na(df1))/ncol(df1) < 0.8,]
#    V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1  4  3  6  7  2  1  2  3  4   1
#2  5  5  4  3  2  1  3  7  6   7
#4  5  2  2  1  7 NA NA NA NA  NA
df1[rowSums(is.na(df1))/ncol(df1)<0.8,]
#V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1  4  3  6  7  2  1  2  3  4   1
#2  5  5  4  3  2  1  3  7  6   7
#4 5 2 1 7 NA NA NA NA NA NA

我们可以在逻辑矩阵上使用
行和

df1[rowSums(is.na(df1))/ncol(df1) < 0.8,]
#    V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1  4  3  6  7  2  1  2  3  4   1
#2  5  5  4  3  2  1  3  7  6   7
#4  5  2  2  1  7 NA NA NA NA  NA
df1[rowSums(is.na(df1))/ncol(df1)<0.8,]
#V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#1  4  3  6  7  2  1  2  3  4   1
#2  5  5  4  3  2  1  3  7  6   7
#4 5 2 1 7 NA NA NA NA NA NA

谢谢!非常感谢您的及时回复!非常感谢。非常感谢您的及时回复!非常感谢。非常感谢您的及时回复!非常感谢。非常感谢您的及时回复!