r中的和NA值

A.J*_*A.J 2 sorting r na

我正在使用具有多个NA值的数据帧,因此我考虑根据其NA值对属性进行排序.我试图使用for循环,这是我到目前为止:

> data <- read.csv("C:/Users/Nikita/Desktop/first1k.csv")
> for (i in 1:length(data) ) {
+ temp <- c(sum(is.na(data[i])))}
> temp
[1] 0
Run Code Online (Sandbox Code Playgroud)

这是我第一次在r中使用for循环,所以我确信它只是一个愚蠢的语法问题,但我无法理解究竟是哪一个.

最终,我需要一个列表,显示属性的名称及其NA计数.这样我就可以对列表进行排序并获得所需的信息.这是一些模拟数据,使其更容易.

data <- data.frame(A = c(500, 600, 700, 1000),
                   B = c(500, 600, 700, NA),
                   C = c(NA, NA, 500, 700),
                   D = c(800, NA, 933, NA),
                   E = c(NA, NA, NA, NA))
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢大家的帮助.这三种解决方案都适合我.我确实想知道是否有一行代码在将它们导出到文件之前对这些属性进行排序.就像我之前提到的,我很新,r所以我不确定它是否可行.

编辑2:当我运行sort时,会给出下一个错误:

temp <- sort(temp)
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
  'x' must be atomic
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

jer*_*ycg 7

这是一个快速回答使用is.nacolSums:

colSums(is.na(data))
Run Code Online (Sandbox Code Playgroud)

返回:

 A B C D E 
 0 1 2 2 4 
Run Code Online (Sandbox Code Playgroud)

对于您的上述数据.

感谢@akrun展示我的盈余 apply

  • 另一种选择是`colSums(is.na(data))` (7认同)
  • 谢谢大家,我已经删除了多余的应用功能 - 对于后代,我有:colSums(apply(data,2,is.na)) (2认同)