我正在使用 R 中的星球大战数据集来搞乱并尝试创建一些我的第一个可视化。我对于一般编程和 R 来说都是新手。
我已经写了下面的内容,但它生成了一个条形图,其中有一个讨厌的“NA”条,因为两个角色的数据的高度为“NA”。我不介意“无”栏,因为我认为这显示了机器人的高度,这仍然很有趣,但我不想要性别的 NA。
genderHeights <- starwars |>
group_by(sex) |>
summarize(
avg_height = mean(height, na.rm = TRUE)
)
ggplot(genderHeights, aes(x = sex, y = avg_height)) +
geom_col() + labs(x = 'Gender', y = 'Average Height (cm)', title = 'Average Height of Star Wars Characters by Gender',
subtitle = 'Does Gender Impact Height?', caption = 'From Starwars Dataset') +
theme_economist()
如你所见,我尝试使用
na.rm
但无济于事。我还尝试使用 complete.cases
和 drop_na()
但不太确定将它们放置在哪里,并且通常无法成功使用它们,因此不知道如何摆脱该条形图并继续美化条形图。
当你取高度的平均值时:
mean(height, na.rm = TRUE)
您省略了
heights
变量中的 NA,而不是 sex
变量。这意味着您仍然可以获得该性别群体的平均身高==NA。
如果您不希望条形图中出现 NA,那么您可以执行以下操作:
在使用
na.omit
进行绘图之前省略 NA:
na.omit(性别高度) %>% ggplot(aes(x = 性别, y = 平均身高)) + geom_col()
使用
filter
(或 subset
)过滤或子集数据:
性别身高%>% 过滤器(!is.na(性别)) %>% ggplot(aes(x = 性别, y = 平均身高)) + geom_col()
任一方法都会为您提供以下信息: