1

I'm new to R and am working with a dataset that involves the favourite colours of people collected in a survey.

I simply have a list of responses with colours being repeated, and so I want to make a frequency table I can work from (to create stacked bar plots, or pie charts).

I tried just using the 'table' function but I was unable to use the created table any further when it came to making plots.

Here is an example of the data: mostFav

1      Blue
2       Red
3       Red
4     Black
5      Blue
6     Black
7    Purple
8      Blue
9    Orange
10    White
11    Green
12    Green
13     Blue
14     Blue
15     Blue
16     Blue
17    Brown
18     Blue
19     Blue
20    Black
JustinF
  • 11
  • 3

2 Answers2

2

I'm not sure I understand the problem; is this what you're trying to do?

data <- structure(list(mostFav = c("Blue", "Red", "Red", "Black", "Blue", 
                                   "Black", "Purple", "Blue",
                                   "Orange", "White", "Green", "Green", 
                                   "Blue", "Blue", "Blue", "Blue",
                                   "Brown", "Blue", "Blue", "Black")),
                  class = "data.frame", row.names = c(NA, -20L))

# Counts for each factor
table(data)
#> data
#>  Black   Blue  Brown  Green Orange Purple    Red  White 
#>      3      9      1      2      1      1      2      1

barplot(table(data))

# Frequency
prop.table(table(data))
#> data
#>  Black   Blue  Brown  Green Orange Purple    Red  White 
#>   0.15   0.45   0.05   0.10   0.05   0.05   0.10   0.05

barplot(prop.table(table(data)))

pie(prop.table(table(data)))

Created on 2022-01-25 by the reprex package (v2.0.1)

jared_mamrot
  • 22,354
  • 4
  • 21
  • 46
2

Depending on what you want to do, you can also try using ggplot without transforming the data into a table first.

mostFav <- data.frame("color" = c('Blue', 'Red', 'Red', 'Black', 'Blue', 'Black', 'Purple', 'Blue', 'Orange', 'White', 'Green', 'Green', 'Blue', 'Blue', 'Blue', 'Blue', 'Brown', 'Blue', 'Blue', 'Black'))

library(ggplot2)

ggplot(data = mostFav, aes(x = color)) +
  geom_bar()

enter image description here

Riiiiiibs
  • 31
  • 3