gpt4 book ai didi

r - r中的NA值总和

转载 作者:行者123 更新时间:2023-12-01 14:41:30 24 4
gpt4 key购买 nike

我正在使用一个具有多个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

这是我第一次在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))

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

编辑2:
当我运行排序时,会给我下一个错误:
temp <- sort(temp)
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) :
'x' must be atomic

知道为什么吗?

最佳答案

在R中执行迭代代码的正确方法是避免显式的for循环。请改用apply(和公司)。 @jeremycg给了您正确的R-ish答案。关于您的代码,您应该进行一些编辑以使其起作用。

temp <- c()
for (i in 1:length(data)){
temp[names(data)[i]] <- sum(is.na(data[i]))
}

您在每次迭代中都重写了 temp。此外,您没有将变量的标签写入 temp。因此,您看到的输出是数据集最后一列中 NA的数量。

关于OP的编辑
temp <- sort(temp) # pass decreasing=T into arguments in case
# you want reversed order

关于r - r中的NA值总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com