12

快速提问。我将 csv 文件读入变量data. 它有一个列 label var,其中包含数值。

当我运行命令时

sd(data$var)

我明白了

[1] NA 

而不是我的标准偏差。

你能帮我弄清楚我做错了什么吗?

4

4 回答 4

31

尝试sd(data$var, na.rm=TRUE)然后列 var 中的任何 NA 都将被忽略。还将支付检查您的数据的费用,以确保 NA 应该是 NA 并且没有读取错误、命令,如head(data), tail(data),并且str(data)应该对此有所帮助。

于 2011-04-21T04:29:38.727 回答
6

在dplyr字符串中重用变量名时,我犯了一两次错误,这导致了问题。

mtcars %>%
  group_by(gear) %>%
  mutate(ave = mean(hp)) %>%
  ungroup() %>%
  group_by(cyl) %>%
  summarise(med = median(ave),
            ave = mean(ave), # should've named this variable something different
            sd = sd(ave)) # this is the sd of my newly created variable "ave", not the original one.
于 2020-05-29T03:44:39.467 回答
5

您可能在 中缺少值var,或者该列不是数字,或者只有一行。

尝试删除将有助于第一种情况的缺失值:

sd(dat$var, na.rm = TRUE)

如果这不起作用,请检查

class(dat$var)

是“数字”(第二种情况)并且

nrow(dat)

大于 1(第三种情况)。

最后,data是 R 中的一个函数,所以最好使用不同的名称,我在这里做了。

于 2011-04-21T04:32:23.020 回答
0

数据中可能有Inf-Inf作为值。

尝试

is.finite(data)

或者

min(data, na.rm = TRUE)
max(data, na.rm = TRUE)

检查是否确实如此。

于 2019-01-02T20:49:29.787 回答