拆分数据并生成显示拆分数据的不同计数的图表

时间:2014-07-18 13:50:23

标签: r

我根据列拆分数据。现在我想计算每个类别的行数并制作单个图。

这是一个例子

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)

2 个答案:

答案 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))

enter image description here

编辑:对于更大的数据:

mydf <- data.frame(X1=sample(x=1:100, size=17000, replace=TRUE),
 X2=sample(x=LETTERS, size=17000, replace=TRUE))

barplot(table(mydf$X2))

enter image description here

答案 1 :(得分:0)

以下是使用dplyr以及ggplot2ggvis的选项(使用伪造的数据集来模仿您拥有的内容)

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()

enter image description here

# ggvis
dat.summary %>% ggvis(~X2, ~count) %>% layer_bars()

enter image description here