`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
不幸的是,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