所以我正在修復我在互聯網上找到的關于不同國家男性和女性吸煙率的圖表,我想按男性吸煙率排序。
我在這里按男性吸煙率 女性吸煙率排序
countries <- c("China","Russia","Turkey","Greece","Israel","Germany","France",
"Italy","Canada","United Kingdom","United States","India","Australia",
"Brazil","Sweden")
women_rate <- c( 1.6,11.3,14.4, 17.9,12.6,18.6,15.4,12.7,12.3,12.5,12.7,1.7,10.4,7.3,6.8)
men_rate <- c(44.4,43.9,40.6,29.9,27.3,25.4,20.5,20.5,17.3,15.9,15.3,15.2,12.8,12.7,5.9)
country <- rep(countries, 2)
rate <- c(men_rate,women_rate)
gender <- c(rep("men",length(men_rate)),rep("women",length(women_rate)))
smoking_data <- data.frame(country,rate,gender)
library(tidyverse)
library(ggthemes)
ggplot(smoking_data, aes(x=rate,
y=reorder(country,rate),fill=gender))
geom_bar(position='dodge', stat='identity')
它給出了這個結果圖。

我希望它按男性吸煙率排序,所以中國、俄羅斯、土耳其、希臘等。
uj5u.com熱心網友回復:
默認情況下reorder,將按所有 obs 的平均值排序。每組,即在您的情況下,每個國家/地區的男性和女性的平均值。
一種解決方法是使用“幫助列”,其中女性的值被替換為,NA以便在重新排序時只考慮男性值。例如,這可以通過使用來實作reorder(country, ifelse(gender == "men", rate, NA), na.rm = TRUE):
library(ggplot2)
ggplot(smoking_data, aes(
x = rate,
y = reorder(country, ifelse(gender == "men", rate, NA), na.rm = TRUE), fill = gender
))
geom_bar(position = "dodge", stat = "identity")

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/533298.html
標籤:rggplot2
