Barplot пропорций для определенного среднего в переменной - PullRequest
0 голосов
/ 03 декабря 2018

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

#create a table with desired data (Total cases and year)
(TC<-table(dataset$Crime.Solved,dataset$Year))
 **Year** 
 1980  1981  1982  1983  1984  1985  1986  1987  1988  1989  1990  1991  
       1992  1993  1994

 **No** 
  6104  5177  5252  4925  4573  4522  4975  5076  5171  5491  5985  7048  
       7676  7654  7095

 **Yes**
 16371 15446 14720 14179 12915 13250 14380 13101 13042 13834 14642 14876 
       15506 16050 15469

  **Year** 
  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  
   2007  2008  2009

  **No** 
  6571  5681  5458  4542  4241  4289  4608  4821  5112  4917  5082  5191  
  5371  4931  4532

 **Yes**
  13970 12727 11735 10949  9896  9831 10627 10917 10854 10827 11249 11550 
  11392 10186 10856

 **Year**
 2010  2011  2012  2013  2014

 **No**
  4328  4236  4391  4321  4312

 **Yes**
 10406 10163 10340  9774  9689
#create a table with desired data (unsolved cases and year)
(USC<-table(unsolvedCASES$Crime.Solved =="No",unsolvedCASES$Year))
**Year**
1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 
       1994 1995 1996 1997

  **TRUE**
  6104 5177 5252 4925 4573 4522 4975 5076 5171 5491 5985 7048 7676 7654 
       7095 6571 5681 5458

  **Year**
  1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 
       2012 2013 2014

  **TRUE**
  4542 4241 4289 4608 4821 5112 4917 5082 5191 5371 4931 4532 4328 4236 
       4391 4321 4312
#now try to get the percent of unsolved homicides each year by deviding unsolved homicides each year by total homicides each year

proportions <- table((dataset$Crime.Solved=="No"/dataset$Crime.Solved ),dataset$Year)

однако, это просто дает мне ошибки, говоря, что

("Нет", набор данных $ Crime.Solved): '/' не имеет значения для факторов

HELLPP !!

спасибо !!

[https://i.stack.imgur.com/8ED9l.png][1]

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

(Это изменение к моему предыдущему ответу) Вот простое решение: предположим, что ваши данные выглядят примерно так (только две переменные, которые вас интересуют):

df <- data.frame(
  Year = c(rep(1980,4), rep(1981,5), rep(1982,6)),
  Crime.Solved = c("yes","no","yes","yes","no","yes","no","no","yes","yes","no","no","yes","no","no"    )
)

Теперь вы создаете список частот 2x2:

freq <- table(df$Year, df$Crime.Solved)

Затем вы рассчитываете пропорции по строкам (см. Число 1):

data <- prop.table(freq, 1) 
              no       yes
  1980 0.2500000 0.7500000
  1981 0.6000000 0.4000000
  1982 0.6666667 0.3333333

Данные, представляющие для вас основной интерес-- доля нераскрытого преступления в год - в самой левой колонке, то есть в data[,1];чтобы распечатать соответствующие годы под каждым столбцом, вы получаете к ним доступ через rownames(data):

barplot(data[,1], main = "Proportions of unsolved crime per year",
    names.arg = row.names(data), las = 3)

enter image description here

0 голосов
/ 03 декабря 2018

Вот очень простое решение:

Во-первых, структурируйте ваши данные следующим образом (с каждой переменной в отдельном столбце):

df <- data.frame(
  year = c(paste("198", 0:9, sep="")),
  crimes = c(sample(100, 10)),
  unsolved = c(sample(40, 10))
)
head(df)
  year crimes unsolved
1 1980     86        2
2 1981     43       23
3 1982     75       37
4 1983      4       33
5 1984     99       20
6 1985     37       28

Чтобы получить пропорции нераскрытых преступлений изДля всех преступлений определите новую переменную $prop.unsolved, разделив $unsolved на $crimes:

df$prop.unsolved <- df$unsolved/df$crimes

Теперь вы можете построить эти пропорции на графике:

barplot(df$prop.unsolved, main = "Proportions of unsolved crime per year",
    names.arg = df$year, las = 3)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...