如何在 R 中选择没有缺失值的列?
有两种简单的方法可以选择 R 数据框中没有缺失值的列,第一种方法得到一个向量,另一种方法返回一个矩阵。例如,如果我们有一个名为 df 的数据框,则第一种方法可以用作 df[,colSums(is.na(df))==0],第二种方法将用作 t(na.omit(t(df)))。
示例
考虑以下数据框 -
df1<-data.frame(x1=sample(c(NA,5),20,replace=TRUE),x2=rpois(20,5)) df1
输出
x1 x2 1 NA 10 2 5 3 3 NA 6 4 NA 9 5 NA 2 6 5 1 7 NA 3 8 NA 4 9 NA 4 10 5 0 11 NA 4 12 NA 1 13 5 7 14 5 6 15 NA 4 16 5 7 17 5 8 18 NA 1 19 NA 5 20 5 5
使用第一种方法选择 df1 中不包含缺失值的列 -
示例
df1[ , colSums(is.na(df1)) == 0]
输出
[1] 10 3 6 9 2 1 3 4 4 0 4 1 7 6 4 7 8 1 5 5
使用第二种方法选择 df1 中不包含缺失值的列 -
示例
t(na.omit(t(df1)))
输出
x2 [1,] 10 [2,] 3 [3,] 6 [4,] 9 [5,] 2 [6,] 1 [7,] 3 [8,] 4 [9,] 4 [10,] 0 [11,] 4 [12,] 1 [13,] 7 [14,] 6 [15,] 4 [16,] 7 [17,] 8 [18,] 1 [19,] 5 [20,] 5
attr(,"na.action") x1 1 attr(,"class") [1] "omit"
示例
df2<-data.frame(y1=sample(c(NA,2),20,replace=TRUE),y2=rnorm(20,5,0.23)) df2
输出
y1 y2 1 NA 4.926885 2 NA 4.880143 3 2 4.999657 4 2 5.101575 5 NA 4.778465 6 NA 4.534625 7 NA 5.341219 8 2 5.462156 9 2 4.553130 10 NA 5.282899 11 NA 4.884406 12 NA 4.960496 13 2 4.913396 14 NA 4.780874 15 NA 5.222774 16 2 5.007299 17 NA 4.900481 18 2 4.839670 19 2 5.107357 20 NA 4.874243
使用第二种方法选择 df2 中不包含缺失值的列 -
示例
t(na.omit(t(df2)))
输出
y2 [1,] 4.926885 [2,] 4.880143 [3,] 4.999657 [4,] 5.101575 [5,] 4.778465 [6,] 4.534625 [7,] 5.341219 [8,] 5.462156 [9,] 4.553130 [10,] 5.282899 [11,] 4.884406 [12,] 4.960496 [13,] 4.913396 [14,] 4.780874 [15,] 5.222774 [16,] 5.007299 [17,] 4.900481 [18,] 4.839670 [19,] 5.107357 [20,] 4.874243
attr(,"na.action") y1 1 attr(,"class") [1] "omit"
广告