geom_bar删除了3行缺少值

时间:2018-06-12 09:57:48

标签: r ggplot2 geom-bar

我尝试使用ggplot2中的R创建直方图。

这是我使用的代码:

library(tidyverse)

dat_male$explicit_truncated <- trunc(dat_male$explicit_mean)
means2 <- aggregate(dat_male$IAT_D, by=list(dat_male$explicit_truncated,dat_male$id), mean, na.rm=TRUE)
colnames(means2) <- c("explicit", "id", "IAT_D")
sd2 <- aggregate(dat_male$IAT_D, by=list(dat_male$explicit_truncated,dat_male$id), sd, na.rm=TRUE)
length2 <- aggregate(dat_male$IAT_D, by=list(dat_male$explicit_truncated,dat_male$id), length)
se2 <- sd2$x / sqrt(length$x)
means2$lo <- means2$IAT_D - 1.6*se2
means2$hi <- means2$IAT_D + 1.6*se2

ggplot(data = means2, aes(x = factor(explicit), y = IAT_D, fill = factor(id))) + 
  geom_bar(stat = "identity", position = position_dodge()) + 
  geom_errorbar(aes(ymin=lo,ymax=hi, width=.2), position=position_dodge(0.9), data=means2) +
  xlab("Explicit attitude score") + 
  ylab("D-score") 

出于某种原因,我收到以下警告消息: Removed 3 rows containing missing values (geom_bar)。 我得到以下直方图: enter image description here

我真的不知道发生了什么。

如果您需要查看我的代码中的任何其他内容,请告诉我,我真的不确定要包含哪些内容。

dat_male是一个看起来像这样的数据集(我只包含了我在这个问题中提到的变量,因为数据集包含68个变量):

      id explicit_mean     IAT_D         explicit_truncated
5     1        3.1250  0.366158652                  3
6     1        3.3125  0.373590066                  3
9     1        3.6250  0.208096230                  3
11    1        3.1250  0.661983618                  3
15    1        2.3125  0.348246184                  2
19    1        3.7500  0.562406383                  3
28    1        2.5625 -0.292888526                  2
35    1        4.3750  0.560039531                  4
36    1        3.8125 -0.117455439                  3
37    1        3.1250  0.074375196                  3
46    1        2.5625  0.488265849                  2
47    1        4.2500 -0.131005579                  4
53    1        2.0625  0.193040876                  2
55    1        2.6875  0.875420303                  2
62    1        3.8750  0.579146056                  3
63    1        3.3125  0.666095380                  3
66    1        2.8125  0.115607820                  2
68    1        4.3750  0.259929946                  4
80    1        3.0000  0.502709149                  3

means2是我用来计算均值的数据集,如下所示:

   explicit id       IAT_D        lo         hi
1        0  0         NaN        NaN        NaN
2        2  0  0.23501191  0.1091807  0.3608431
3        3  0  0.31478389  0.2311406  0.3984272
4        4  0 -0.24296625 -0.3241166 -0.1618159
5        1  1 -0.04010111         NA         NA
6        2  1  0.21939286  0.1109138  0.3278719
7        3  1  0.29097806  0.1973051  0.3846511
8        4  1  0.22965463  0.1209229  0.3383864

现在我看到它在我面前,它可能与NaN有关吗?

1 个答案:

答案 0 :(得分:1)

从您的数据集看,似乎一切正常。

您收到的错误表明您的data.frame有空值(即NaNNA)。 我实际上收到两条警告信息: Warning messages: 1: Removed 1 rows containing missing values (geom_bar). 2: Removed 2 rows containing missing values (geom_errorbar).

关于绘图,因为explicit下没有任何零值,所以您在图表中看不到它。同样,因为NA下的lo hiexplicit means2 <- read.table(text = " explicit id IAT_D lo hi 1 0 0 NaN NaN NaN 2 2 0 0.23501191 0.1091807 0.3608431 3 3 0 0.31478389 0.2311406 0.3984272 4 4 0 -0.24296625 -0.3241166 -0.1618159 5 1 1 -0.04010111 NA NA 6 2 1 0.21939286 0.1109138 0.3278719 7 3 1 0.29097806 0.1973051 0.3846511 8 4 1 0.22965463 0.1209229 0.3383864", header = TRUE) means2 %>% ggplot(aes(x = factor(explicit), y = IAT_D, fill = factor(id))) + geom_bar(stat = "identity", position = position_dodge()) + geom_errorbar(aes(ymin=lo,ymax=hi, width=.2), position=position_dodge(0.9)) + xlab("Explicit attitude score") + ylab("D-score") 中的iif {/ 1}},因此您无法获得相应的错误栏。

数据集:

select iif(C.user_one=20151844,C.user_two,C.user_one) as contact_IDs
from [dbo].[Contact] C
where C.user_one=20151844 or C.user_two=20151844

情节:

{{1}}

enter image description here