在二进制变量中计数1s

时间:2018-08-27 11:04:25

标签: r ggplot2

我的数据看起来像这样

Colour Q1 Q2 Q3
yellow  1  0  1 
green   0  0  1
red     1  1  1
black   0  1  0
green   1  0  1
white   0  0  1
yellow  1  1  1

,我想要一个看起来像这样的表,所以我可以在ggplot2中绘制一些条形图,其中x轴有3个季度,每个季度有每种颜色的计数。我尝试了table()(以及此处提出的其他建议),但是它给了我TRUEFALSE,这只会使工作变得更加困难,因为我不知道如何处理。以使用ggplot2绘制条形图。

Colour Q1 Q2 Q3
yellow  2  1  2
red     1  1  1
green   1  0  2
white   0  0  1
black   0  1  0

1 个答案:

答案 0 :(得分:1)

我已经搜索过SO,但没有找到该问题的完全重复项。

OP请求:

  

...所以我可以在ggplot2中绘制一些条形图,其中x轴有3个季度,每个季度有每种颜色的计数。

为此,聚合不是这里的重点(ggplot2具有处理不同统计信息的功能),但重塑以形成x轴:单独的列Q1Q2Q3需要转换为季度数据的一列,而另外的Quarter列将成为x轴。

对于从宽格式到长格式的重塑,我们可以使用

long <- tidyr::gather(raw_data, "Quarter", "Count", -Colour)

long <- data.table::melt(raw_data, "Colour", , "Quarter", "Count")

(仅提及一些选项)。

两者均以长格式返回新的数据集:

long
   Colour Quarter Count
1  yellow      Q1     1
2   green      Q1     0
3     red      Q1     1
4   black      Q1     0
5   green      Q1     1
6   white      Q1     0
7  yellow      Q1     1
8  yellow      Q2     0
9   green      Q2     0
10    red      Q2     1
11  black      Q2     1
12  green      Q2     0
13  white      Q2     0
14 yellow      Q2     1
15 yellow      Q3     1
16  green      Q3     1
17    red      Q3     1
18  black      Q3     0
19  green      Q3     1
20  white      Q3     1
21 yellow      Q3     1

现在,我们可以告诉ggplot()

  • 沿x轴(Quarter)放置条的位置,
  • 用于填充条形图的颜色(Colour
  • 以及条形的高度(Count)。

通过

library(ggplot2)
ggplot(long) + 
  aes(Quarter, Count, fill = Colour) +
  geom_col() + 
  scale_fill_identity(guide = "legend")

enter image description here

数据

raw_data <- data.table::fread("
Colour Q1 Q2 Q3
yellow  1  0  1 
green   0  0  1
red     1  1  1
black   0  1  0
green   1  0  1
white   0  0  1
yellow  1  1  1")