我根据列拆分数据。现在我想计算每个类别的行数并制作单个图。
这是一个例子
X1 =c(1,2,3,4,10,20,22,21)
X2 =c(A,A,A,B,B,B,C,C)
data <- data.frame(cbind(X1,X2))
X1 X2
1 A
2 A
3 A
4 B
10 B
20 B
22 C
21 C
split(data,data$X2)
$A
X1 X2
1 A
2 A
3 A
$B
X1 X2
4 B
10 B
20 B
$C
X1 X2
22 C
21 C
在我的原始数据集中,有超过30个类别(X2)
答案 0 :(得分:0)
mydf = structure(list(X1 = c(1L, 2L, 3L, 4L, 10L, 20L, 22L, 21L), X2 = structure(c(1L,
1L, 1L, 2L, 2L, 2L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor")), .Names = c("X1",
"X2"), class = "data.frame", row.names = c(NA, -8L))
>
>
> mydf
X1 X2
1 1 A
2 2 A
3 3 A
4 4 B
5 10 B
6 20 B
7 22 C
8 21 C
barplot(table(mydf$X2))
编辑:对于更大的数据:
mydf <- data.frame(X1=sample(x=1:100, size=17000, replace=TRUE),
X2=sample(x=LETTERS, size=17000, replace=TRUE))
barplot(table(mydf$X2))
答案 1 :(得分:0)
以下是使用dplyr
以及ggplot2
或ggvis
的选项(使用伪造的数据集来模仿您拥有的内容)
library(dplyr)
library(ggvis)
library(ggplot2)
dat <- data.frame(X1=sample(x=1:100, size=17000, replace=TRUE),
X2=sample(x=LETTERS, size=17000, replace=TRUE))
dat.summary <- summarise(group_by(dat, X2), count=n())
# ggplot
qplot(data=dat.summary, x=X2, y=count, geom="bar", stat="identity") + theme_bw()
# ggvis
dat.summary %>% ggvis(~X2, ~count) %>% layer_bars()