在 R 中的数据框中创建值的条形图
Create Bargraph of values in a dataframe in R
假设我有以下数据框
set.seed(85)
a <- data.frame(replicate(10,sample(0:3,5,rep=TRUE)))
我想创建数据框中值的条形图(即显示总共有多少个 0、1、2 和 3)。
然而
hist(a)
给我错误 'x' must be numeric
但 as.numeric(a)
给我错误 (list) object can not be coerced to type 'double'
如何制作数据框中值的条形图?同样最好,它应该忽略 N/A 值。
非常感谢任何帮助。
绘制“总共有多少个 0、1、2 和 3” 是绘制这些值的计数。因此,合适的图表类型是 barplot,而不是直方图。
barplot(table(unlist(a)))
如果数据已更改为 a
的所有元素都等于其中一个值,在本例中 "2"
,被 NA
替换,解决方案可能是强制因素手动设置级别。
a[a == "2"] <- NA
a2 <- unlist(a)
a2 <- factor(a2, levels = min(a2, na.rm = TRUE):max(a2, na.rm = TRUE))
barplot(table(a2))
ggplot2
另外,在中有一个ggplot
解法是不对的。我在评论中提出了更正,但我还没有得到答案,并且建议的更正也适用于这种情况,无需强制因素。
library(ggplot2)
ggplot(stack(a), aes(x = values)) +
geom_bar()
直方图,因此 ggplot2 中的 geom_histogram 用于连续数据。您需要一个条形图来可视化离散数据。除了图形中的barplot,在ggplot2中还可以使用geom_bar。 ggplot2 语法是:
library(ggplot2)
set.seed(85)
a <- data.frame(replicate(10,sample(0:3,5,rep=TRUE)))
ggplot(stack(a)) + geom_bar(aes(x=values))
假设我有以下数据框
set.seed(85)
a <- data.frame(replicate(10,sample(0:3,5,rep=TRUE)))
我想创建数据框中值的条形图(即显示总共有多少个 0、1、2 和 3)。
然而
hist(a)
给我错误 'x' must be numeric
但 as.numeric(a)
给我错误 (list) object can not be coerced to type 'double'
如何制作数据框中值的条形图?同样最好,它应该忽略 N/A 值。
非常感谢任何帮助。
绘制“总共有多少个 0、1、2 和 3” 是绘制这些值的计数。因此,合适的图表类型是 barplot,而不是直方图。
barplot(table(unlist(a)))
如果数据已更改为 a
的所有元素都等于其中一个值,在本例中 "2"
,被 NA
替换,解决方案可能是强制因素手动设置级别。
a[a == "2"] <- NA
a2 <- unlist(a)
a2 <- factor(a2, levels = min(a2, na.rm = TRUE):max(a2, na.rm = TRUE))
barplot(table(a2))
ggplot2
另外,在ggplot
解法是不对的。我在评论中提出了更正,但我还没有得到答案,并且建议的更正也适用于这种情况,无需强制因素。
library(ggplot2)
ggplot(stack(a), aes(x = values)) +
geom_bar()
直方图,因此 ggplot2 中的 geom_histogram 用于连续数据。您需要一个条形图来可视化离散数据。除了图形中的barplot,在ggplot2中还可以使用geom_bar。 ggplot2 语法是:
library(ggplot2)
set.seed(85)
a <- data.frame(replicate(10,sample(0:3,5,rep=TRUE)))
ggplot(stack(a)) + geom_bar(aes(x=values))