`na.rm` 没有删除 NA

`na.rm` is not removing NAs

不幸的是,na.rm 没有删除我的 NA,我没有得到想要的结果。

这是我所做的:

首先,我在 R 中重新编码了一个列,以删除我的项目中不必要的值(这可能就是问题所在)

ESS.subset$stfdem.rc <- recode(ESS.subset$stfdem, 'c(77,88,99)=NA')

不知何故,我无法将其用于进一步计算,因为 NA 以某种方式保留下来。事实上,

mean(data$variable.rc, na.rm = T)

因此发出警告消息和 NA。

感谢您的帮助!

澄清:

这是我需要分析的数据集的摘录(我已经更改了)。

structure(list(cntry = c("BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE"), clsprty = c(2L, 2L, 2L, 2L, 1L, 
1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 
1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 
1L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 
2L, 2L), gndr.rc = c(0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 
0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1), 
    agea.rc = c(1, 3, 7, 2, 2, 3, 4, 3, 1, 3, 4, 5, 7, 3, 4, 
    4, 5, 4, 3, 6, 2, 4, 4, 5, 4, 4, 5, 1, 2, 5, 4, 1, 6, 6, 
    1, 4, 7, 3, 5, 2, 3, 4, 5, 7, 2, 3, 6, 7, 3, 2, 3, 6, 1, 
    7, 7), pdjobyr.rc = c("1", "NA", "0", "NA", "NA", "NA", "NA", 
    "1", "NA", "1", "NA", "NA", "NA", "0", "0", "NA", "NA", "NA", 
    "NA", "NA", "NA", "0", "NA", "0", "NA", "NA", "NA", "NA", 
    "NA", "0", "NA", "1", "0", "0", "1", "NA", "0", "NA", "NA", 
    "1", "NA", "NA", "NA", "0", "NA", "NA", "1", "0", "1", "NA", 
    "NA", "NA", "NA", "0", "0"), hinctnta.rc = c("NA", "1", "1", 
    "1", "1", "1", "NA", "1", "1", "1", "1", "1", "1", "1", "1", 
    "1", "1", "1", "1", "1", "1", "1", "1", "NA", "1", "1", "NA", 
    "1", "1", "1", "1", "1", "1", "1", "NA", "1", "1", "1", "1", 
    "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", 
    "1", "NA", "1", "1"), clsprty.rc = c(0, 0, 0, 0, 1, 1, 0, 
    0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 
    1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 
    1, 1, 1, 0, 0, 1, 0, 0, 0, 0), polintr.rc = c("3", "3", "3", 
    "3", "3", "2", "2", "4", "3", "3", "3", "1", "2", "3", "4", 
    "3", "2", "4", "3", "1", "2", "2", "1", "4", "2", "1", "2", 
    "4", "2", "3", "2", "2", "2", "1", "3", "2", "2", "4", "3", 
    "2", "2", "2", "2", "2", "2", "1", "1", "2", "4", "4", "3", 
    "1", "4", "4", "2"), eisced.rc = c("2", "2", "2", "2", "2", 
    "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", 
    "2", "2", "2", "2", "1", "2", "2", "2", "2", "2", "2", "2", 
    "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", 
    "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "1", 
    "1", "2"), stfdem.rc = c("5", "1", "6", "9", "2", "7", "9", 
    "10", "7", "6", "6", "2", "5", "7", "8", "6", "3", "5", "5", 
    "7", "3", "7", "7", "5", "7", "1", "8", "7", "5", "7", "5", 
    "8", "5", "6", "9", "6", "8", "3", "8", "8", "7", "8", "6", 
    "6", "2", "7", "2", "7", "8", "7", "5", "8", "4", "NA", "6"
    )), row.names = c(NA, -55L), class = "data.frame")

这是原始数据集的摘录。

structure(list(cntry = c("BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", "BE", 
"BE", "BE", "BE", "BE", "BE"), stfdem = c(5L, 1L, 6L, 9L, 2L, 
7L, 9L, 10L, 7L, 6L, 6L, 2L, 5L, 7L, 8L, 6L, 3L, 5L, 5L, 7L, 
3L, 7L, 7L, 5L, 7L, 1L, 8L, 7L, 5L, 7L, 5L, 8L, 5L, 6L, 9L, 6L, 
8L, 3L, 8L, 8L, 7L, 8L, 6L, 6L, 2L, 7L, 2L, 7L, 8L, 7L, 5L, 8L, 
4L, 88L, 6L), gndr = c(1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 
2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 
1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 
2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L), agea = c(17L, 
40L, 79L, 23L, 29L, 40L, 50L, 33L, 16L, 32L, 43L, 57L, 76L, 34L, 
41L, 47L, 59L, 41L, 36L, 68L, 27L, 47L, 43L, 52L, 42L, 42L, 60L, 
20L, 29L, 51L, 48L, 19L, 64L, 65L, 18L, 46L, 78L, 33L, 58L, 22L, 
39L, 46L, 57L, 72L, 26L, 37L, 67L, 81L, 38L, 24L, 34L, 61L, 15L, 
85L, 73L), pdjobyr = c(2012L, 6666L, 1957L, 6666L, 6666L, 6666L, 
6666L, 2012L, 6666L, 2012L, 6666L, 6666L, 6666L, 2002L, 1995L, 
6666L, 6666L, 6666L, 6666L, 6666L, 6666L, 2009L, 6666L, 2008L, 
6666L, 6666L, 6666L, 6666L, 6666L, 2011L, 6666L, 2012L, 2006L, 
2006L, 2012L, 6666L, 1992L, 6666L, 6666L, 2012L, 6666L, 6666L, 
6666L, 2005L, 6666L, 6666L, 2012L, 1984L, 2012L, 6666L, 6666L, 
6666L, 6666L, 1969L, 1997L), hinctnta = c(88L, 7L, 2L, 3L, 5L, 
7L, 88L, 4L, 4L, 7L, 7L, 8L, 3L, 2L, 2L, 3L, 6L, 4L, 4L, 9L, 
7L, 2L, 9L, 88L, 8L, 9L, 88L, 4L, 9L, 5L, 5L, 6L, 3L, 5L, 88L, 
6L, 4L, 8L, 6L, 8L, 8L, 10L, 5L, 5L, 2L, 5L, 8L, 4L, 7L, 4L, 
4L, 9L, 88L, 4L, 5L), clsprty = c(2L, 2L, 2L, 2L, 1L, 1L, 2L, 
2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 
2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 
1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L
), polintr = c(3L, 3L, 3L, 3L, 3L, 2L, 2L, 4L, 3L, 3L, 3L, 1L, 
2L, 3L, 4L, 3L, 2L, 4L, 3L, 1L, 2L, 2L, 1L, 4L, 2L, 1L, 2L, 4L, 
2L, 3L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 4L, 3L, 2L, 2L, 2L, 2L, 2L, 
2L, 1L, 1L, 2L, 4L, 4L, 3L, 1L, 4L, 4L, 2L), eisced = c(2L, 7L, 
2L, 2L, 4L, 7L, 6L, 4L, 2L, 7L, 7L, 6L, 2L, 4L, 4L, 3L, 6L, 4L, 
4L, 7L, 7L, 1L, 6L, 2L, 7L, 4L, 4L, 4L, 3L, 4L, 2L, 2L, 4L, 7L, 
4L, 6L, 6L, 6L, 2L, 5L, 3L, 6L, 4L, 6L, 4L, 7L, 7L, 4L, 4L, 6L, 
5L, 7L, 1L, 1L, 2L)), row.names = c(NA, -55L), class = "data.frame")

这将是计算平均值的警告消息。

> mean(ESS.subset$stfdem.rc, na.rm = T)
[1] NA
Warning message:
In mean.default(ESS.subset$stfdem.rc, na.rm = T) :
  argument is not numeric or logical: returning NA

我不确定这是否是您要找的,请告诉我。

library(tidyverse)

df %>% 
  as_tibble() %>% 
  type.convert(as.is = TRUE) %>% 
  summarise(mean = across(where(is.numeric), mean, na.rm=TRUE))

输出:

  mean$clsprty $gndr.rc $agea.rc $pdjobyr.rc $hinctnta.rc $clsprty.rc $polintr.rc $eisced.rc $stfdem.rc
         <dbl>    <dbl>    <dbl>       <dbl>        <dbl>       <dbl>       <dbl>      <dbl>      <dbl>
1          1.6      0.7      3.7         0.5            1         0.4        2.75          2        5.8