如何在不使用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()