Комплексная сгруппированная гистограмма - PullRequest
1 голос
/ 20 марта 2020

Мне бы очень хотелось узнать, как использовать R, но я все еще борюсь с основными 1010 * вещами. Мне нужно сделать гистограмму, где столбец сгруппированы в четыре переменные. Это упрощенная матрица моих данных:

REGION    AREA   AGE     LOCALS  FOREIGNER
1     USA    CITY   OLD 30.7485876  3.5254237
2     USA    CITY YOUNG 51.1666667  1.1666667
3     USA COUNTRY   OLD  6.1666667  1.8333333
4     USA COUNTRY YOUNG 14.0000000  2.5000000
5  EUROPE    CITY   OLD  4.5000000  8.8333333
6  EUROPE    CITY YOUNG  0.6680672 18.7044818
7  EUROPE COUNTRY   OLD 56.5000000  0.8333333
8  EUROPE COUNTRY YOUNG 59.8333333  0.6666667
9    ASIA    CITY   OLD 28.6666667  6.1666667
10   ASIA    CITY YOUNG 25.8333333  7.3333333
11   ASIA COUNTRY   OLD  3.0494232 18.1195224
12   ASIA COUNTRY YOUNG  2.1666667 21.5000000

И вот результаты, которые я хотел бы получить с помощью R (сделано в Excel):

GRAPH

Я потратил много времени на поиски в Интернете, но могу найти коды только для двух переменных. Может ли кто-нибудь помочь мне сделать это?

1 Ответ

1 голос
/ 20 марта 2020

Не совсем то, что вы просили, но здесь идет.

data <- read.table(textConnection("
REGION    AREA   AGE     LOCALS  FOREIGNER
1     USA    CITY   OLD 30.7485876  3.5254237
2     USA    CITY YOUNG 51.1666667  1.1666667
3     USA COUNTRY   OLD  6.1666667  1.8333333
4     USA COUNTRY YOUNG 14.0000000  2.5000000
5  EUROPE    CITY   OLD  4.5000000  8.8333333
6  EUROPE    CITY YOUNG  0.6680672 18.7044818
7  EUROPE COUNTRY   OLD 56.5000000  0.8333333
8  EUROPE COUNTRY YOUNG 59.8333333  0.6666667
9    ASIA    CITY   OLD 28.6666667  6.1666667
10   ASIA    CITY YOUNG 25.8333333  7.3333333
11   ASIA COUNTRY   OLD  3.0494232 18.1195224
12   ASIA COUNTRY YOUNG  2.1666667 21.5000000"), header = TRUE)

data <- as.data.frame(data)

library(tidyr)

data <- data %>% 
          gather(LOC_FOR, VALUE, -REGION, -AREA, -AGE) #If you want to change the name "LOC_FOR" to something else do it here.

library(ggplot2)

ggplot(data, aes(x = AGE, y = VALUE, fill = LOC_FOR)) +
  geom_bar(position = 'dodge', stat = 'identity') +
  facet_grid(~REGION + AREA)

enter image description here

...