如何从数据框中删除 NA 以防止在 R 中使用 ggplot2 出现“NA”条?

问题描述 投票:0回答:1

我正在使用 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()
但不太确定将它们放置在哪里,并且通常无法成功使用它们,因此不知道如何摆脱该条形图并继续美化条形图。

r ggplot2 visualization na na.rm
1个回答
0
投票

当你取高度的平均值时:

mean(height, na.rm = TRUE)

您省略了

heights
变量中的 NA,而不是
sex
变量。这意味着您仍然可以获得该性别群体的平均身高==NA。

如果您不希望条形图中出现 NA,那么您可以执行以下操作:

  1. 在使用

    na.omit
    进行绘图之前省略 NA:

    na.omit(性别高度) %>% ggplot(aes(x = 性别, y = 平均身高)) + geom_col()

  2. 使用

    filter
    (或
    subset
    )过滤或子集数据:

    性别身高%>% 过滤器(!is.na(性别)) %>% ggplot(aes(x = 性别, y = 平均身高)) + geom_col()

任一方法都会为您提供以下信息:

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.