Arhn - архитектура программирования

Гистограмма R - Показать данные в процентах

У меня есть данные о людях, погибших в крушении поезда, и их возрасте.

Например:

file <- data.frame(
        Survived = sample(0:1, 100, replace=TRUE),
        Age = sample(0:100, 100, replace=TRUE))

Я хотел бы создать гистограмму в R, где каждый бин измеряет количество умерших людей в процентах от общего количества людей в наборе данных, содержащемся в диапазоне бинов.

Вот что у меня есть до сих пор:

hist(file[which(file$Survived==1),]$Age, freq=FALSE)

Но это возвращает только гистограмму со значениями в процентах от всего набора данных. Вот так: Гистограмма образцов данных

Мне нужен процент определенной возрастной группы, чтобы, если бы все люди в возрасте от 0 до 10 умерли, полоса гистограммы была бы на 100% в этой возрастной группе.

29.05.2017

  • Проверьте функцию hist(), устанавливающую параметр freq FALSE. hist(yourvariable,freq=F) 29.05.2017
  • Я знаю, как получить проценты от всего набора данных. Я ищу процент данных, содержащихся в корзине. 29.05.2017
  • например, количество умерших людей в возрасте 20–40 лет, деленное на количество людей в возрасте 20–40 лет в наборе данных. 29.05.2017
  • включите в свое сообщение воспроизводимый пример: stackoverflow.com/help/mcve 29.05.2017
  • Я добавил кое-что, но я не уверен, что именно вам нужно. Спасибо за вашу помощь, я очень ценю это. 30.05.2017
  • чтобы добавить проценты, вам нужно установить freq=FALSE в вашем hist() вызове 30.05.2017
  • отредактировано для решения этой 30.05.2017
  • Вы обнаружите, что это намного проще, если вы используете пакет. В частности, dplyr и ggplot2. См., например, эту очень похожую проблему: stackoverflow.com/questions/41030350/ 30.05.2017

Ответы:


1

Я не уверен, хорошо ли я понял ваши данные, но вот возможность использования функции barplot:

#example data    
AGE<-c(rep("<20",6),rep("20-40",6),rep("40-60",9))
set.seed(123)
SURVIVED<-sample(c(0,1), replace=TRUE, size=21)
df<-data.frame(AGE,SURVIVED)

#output of the data
df
     AGE SURVIVED
1    <20        0
2    <20        1
3    <20        0
4    <20        1
5    <20        1
6    <20        0
7  20-40        1
8  20-40        1
9  20-40        1
10 20-40        0
11 20-40        1
12 20-40        0
13 40-60        1
14 40-60        1
15 40-60        0
16 40-60        1
17 40-60        0
18 40-60        0
19 40-60        0
20 40-60        1
21 40-60        1

#the actual code
barplot(prop.table(table(df$SURVIVED,df$AGE), margin =2)[2,])

#and the proportions per group
> prop.table(table(df$SURVIVED,df$AGE), margin =2)

          <20     20-40     40-60
  0 0.5000000 0.3333333 0.4444444
  1 0.5000000 0.6666667 0.5555556

table даст вам частоты SURVIVED==1 для каждой возрастной группы, а prop.table даст вам проценты.

введите здесь описание изображения

Это близко к тому, что вы искали?

29.05.2017
  • вам нужно сгруппировать данные по категориям 30.05.2017
  • Нет более чистого способа сделать это? 30.05.2017
  • Подождите, извините, я только что посчитал данные, которые вы предоставили, это совсем не то, что мне нужно. Это проценты от всего набора данных, а не от конкретных возрастных диапазонов. 30.05.2017
  • действительно, уже поздно. Я обновил ответ. Теперь у вас есть пропорция в группе. 30.05.2017
  • Хорошо, спасибо за вашу помощь. Но я хочу подождать и посмотреть, сможет ли кто-нибудь еще сделать это, не трансформируясь в возрастные группы. 30.05.2017
  • Я почти уверен, что вам придется каким-то образом сгруппировать свои данные в ячейки, как упомянул GyB. Если вы просто заинтересованы в изменении ваших данных, это должно быть довольно просто. Если ваши столбцы «возраст» и «выжили», разделите их на группы с чем-то вроде splitlist<-split(df, cut(df$ages, seq(0,max(df$ages), by = 20))), а затем постройте гистограмму, как предлагает @GyB barplot(rbind(lapply(splitlist, function(x) 100*sum(x[,"survived"])/nrow(x)))) 30.05.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..