如何在不使用R中的表的情况下对分类值的实例求和?

如何在不使用R中的表的情况下对分类值的实例求和?,r,ggplot2,aggregate,heatmap,r-table,R,Ggplot2,Aggregate,Heatmap,R Table,我想计算一个值基于另一个值出现的次数。示例数据: df <- data.frame(hour = c("1", "2", "1", "2", "3", "2", "3"), name = c("A", "B", "A", "B", "C", "

我想计算一个值基于另一个值出现的次数。示例数据:

df <- data.frame(hour = c("1", "2", "1", "2", "3", "2", "3"), name = c("A", "B", "A", "B", "C", "A", "B"))

df表格输出可转换为数据帧。根据所需的输出,使用以下选项之一:

as.data.frame.matrix(table(df))

library(tibble)
rownames_to_column(as.data.frame.matrix(table(df)), "hour")

as.data.frame(table(df))
热图 关于热图,请注意,R底部的
heatmap
直接接受
表格
输出(此处未显示的gplots::balloodplot也接受表格输出):

也可以在ggpubr::balloodplot、lattice::levelplot或ggplot2中使用
as.data.frame(table(df))

输出如下所示(生成此输出的代码请参见末尾的注释):

df
我想在ggplot中做一个热图,需要一个数据框

一个选项可能是
stat\u bin\u 2d()

结果

?stat\u bin\u 2d

将平面划分为矩形,计算每个矩形中的事例数,然后(默认情况下)将事例数映射到矩形的填充

heatmap(table(df))
library(ggpubr)
ggballoonplot(as.data.frame(table(df)))

library(lattice)
levelplot(Freq ~ hour * name, as.data.frame(table(df)))

library(dplyr)
library(ggplot2)
df %>% 
  table %>% 
  as.data.frame %>% 
  ggplot(aes(hour, name, fill = Freq)) + geom_tile()
df <- structure(list(hour = c("1", "2", "1", "2", "3", "2", "3"), name = c("A", 
"B", "A", "B", "C", "A", "B")), class = "data.frame", row.names = c(NA, 
-7L))

library(cowplot)
library(gridGraphics)

heatmap(table(df), main = "heatmap")
# convert from classic to grid graphics to later combine
grid.echo()
p1 <- grid.grab()

library(ggpubr)
p2 <- ggballoonplot(as.data.frame(table(df))) + 
  ggtitle("ggubr::ggballoonplot")

library(lattice)
p3 <- levelplot(Freq ~ hour * name, as.data.frame(table(df)), 
  main = "lattice::levelplot")

library(magrittr)
library(ggplot2)

p4 <- df %>% 
  table %>% 
  as.data.frame %>% 
  ggplot(aes(hour, name, fill = Freq)) + geom_tile() + ggtitle("ggplot2")

plot_grid(p2, p3, p4, p1, nrow = 2)
library(ggplot2)
ggplot(df, aes(hour, name)) +
  stat_bin_2d()