0

我有一个简化如下的数据集:

print(data)
Team   Colour
A      Red
B      Red
C      Blue
D      Green

我想制作这个数据的华夫饼图(方形饼图)。我可以通过以下方式非常轻松地做到这一点:

waffle(c(Red = sum(data$Colour == "Red"), 
         Blue = sum(data$Colour = "Blue"), 
         Green = sum(data$colour = "Green")))

但是,我似乎找不到一种简单的方法来通过操作我的数据集来生成在上面的 waffle 函数中创建的命名整数。我需要它直接从原始数据集生成,因为我需要它成为闪亮应用程序中的反应函数。

我尝试group_by在 dplyr 中使用:

forwaffle <- data%>%
             group_by(Colour)
             summarise(frequency=n())

但是,我无法将此列表转换为所需的命名整数。我尝试过使用t()unlist()但这些都没有达到我想要的结果。

4

2 回答 2

0

更新

使用更短的tidyverse解决方案deframe(感谢@r2evans):

count(df, Colour) %>%
    tibble::deframe() %>%
    waffle(.)

上面评论中@r2evans 的解决方案绝对是最简洁的,但如果你坚持使用一种tidyverse方法,你可以这样做:

setNames(
    df %>% count(Colour) %>% pull(n),
    df %>% count(Colour) %>% pull(Colour)) %>%
waffle(.)

在此处输入图像描述


样本数据

df <- read.table(text =
    "Team   Colour
A      Red
B      Red
C      Blue
D      Green", header = T)
于 2018-04-17T22:18:14.327 回答
0

如果通过“必需的命名整数”表示颜色应该是列名,那么您可以使用tidyr::spread

library(dplyr)
library(tidyr)

data %>% 
  group_by(Colour) %>% 
  summarise(frequency = n()) %>% 
  spread(Colour, frequency)

# A tibble: 1 x 3
   Blue Green   Red
  <int> <int> <int>
1     1     1     2
于 2018-04-17T22:17:08.063 回答