我的数据集简化如下:
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")))
然而,我似乎无法通过操纵我的数据集找到一种简单的方法来生成在上面的华夫饼函数中创建的命名整数。我需要直接从原始数据集中生成它,因为我需要它在闪亮的应用程序中成为反应函数。
我尝试在dplyr中使用group_by
:
forwaffle <- data%>%
group_by(Colour)
summarise(frequency=n())
但是,我无法将此列表转换为所需的命名整数。我尝试过使用t()
和unlist()
,但这些都没有达到我想要的结果。
答案 0 :(得分: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
答案 1 :(得分: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)