我有数据显示文件中存储为CSV的照片中的人:
|------------+---------------------------|
| image | people |
|------------+---------------------------|
| image1.png | John, Paul |
| image2.png | John |
| image3.png | |
| image4.png | George, Paul, John, Ringo |
| ... | |
|------------+---------------------------|
我想将它加载到R中,并以各种方式绘制它,但是我想说我想得到一个条形图,显示每个人出现的次数。
如果有帮助,我可以重组数据。
谢谢
答案 0 :(得分: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
如果您将数据集投射为此形状,则可以使用ddply
中的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()
这可能会让您开始创建其他可视化。