0

我有数据显示谁在以 CSV 格式存储在文件中的照片中:

|------------+---------------------------|
| image      | people                    |
|------------+---------------------------|
| image1.png | John, Paul                |
| image2.png | John                      |
| image3.png |                           |
| image4.png | George, Paul, John, Ringo |
| ...        |                           |
|------------+---------------------------|

我想将它加载到 R 中,并以各种方式绘制它,但假设我想得到一个条形图,显示每个人出现了多少次。

如果有帮助,我可以重组数据。

谢谢

4

1 回答 1

1

像这样的数据集描述了您在问题中提到的情况:

require(plyr)
people_list = c("Edward", "Smith", "Neo", "Mr. Anderson", 
                "Red John", "Blackbeard", "Lily", "Anne")
dat = data.frame(image = sprintf("image%d.png", 1:100))
dat = ddply(dat, .(image), function(x) {
  people = sample(people_list, size = sample(1:length(people_list), 1))
  return(data.frame(image = x$image, people))
})
> head(dat)
       image     people
1 image1.png Blackbeard
2 image1.png     Edward
3 image1.png       Anne
4 image1.png       Lily
5 image1.png        Neo
6 image1.png   Red John

如果您将数据集转换为这种形状,则可以使用ddplyfrom计算聚合plyr

# Number of occurences of people
occ = ddply(dat, .(people), summarise, no_occurence = length(people))
> occ
        people no_occurence
1         Anne           48
2   Blackbeard           56
3       Edward           46
4         Lily           55
5 Mr. Anderson           55
6          Neo           51
7     Red John           60
8        Smith           56

...并以此创建一个条形图,例如:

require(ggplot2)
theme_set(theme_bw())
ggplot(occ, aes(x = people, y = no_occurence)) + geom_bar()

在此处输入图像描述

这可能会让您开始创建其他可视化。

于 2012-10-19T22:20:39.287 回答