R语言 关于缺失数据的问题

omhiaaxx  于 2023-01-15  发布在  其他
关注(0)|答案(3)|浏览(161)

在矩阵中,如果有一些缺失数据,则记录为NA

  • 如何删除矩阵中包含NA的行?
  • 我可以使用na.rm吗?
7kjnsjlb

7kjnsjlb1#

na.omit()将接受矩阵(和 Dataframe ),并只返回那些没有NA值的行--它需要complete.cases()更进一步,为您删除FALSE行。

> x <- data.frame(c(1,2,3), c(4, NA, 6))
> x
  c.1..2..3. c.4..NA..6.
1          1           4
2          2          NA
3          3           6
> na.omit(x)
  c.1..2..3. c.4..NA..6.
1          1           4
3          3           6
ohtdti5x

ohtdti5x2#

我认为 * na.rm * 通常只在函数中起作用,比如说 mean 函数,我会选择 complete.caseshttp://stat.ethz.ch/R-manual/R-patched/library/stats/html/complete.cases.htm
假设您有以下3x 3矩阵:

x <- matrix(c(1:8, NA), 3, 3)

> x
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6   NA

那么你就可以得到这个矩阵的所有情况

y <- x[complete.cases(x),]

> y
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
  • complete.cases*-函数返回一个真值向量,表示一个事例是否完整:
> complete.cases(x)
[1]  TRUE  TRUE FALSE

然后索引矩阵 x 的行并添加“”,表示需要所有列。

piztneat

piztneat3#

如果你想删除包含NA的行,你可以使用apply()应用一个快速函数来检查每一行。例如,如果你的矩阵是x,

goodIdx <- apply(x, 1, function(r) !any(is.na(r)))
newX <- x[goodIdx,]

相关问题