2012-07-25 58 views
0

我正在分析一批R中绘制的人口密度数据。我也想生成一个价值密度图。例如:在r中绘制加权总体密度

 dog.breed weight.lbs 
[1] Labrador  63 
[2] Maltese  6 
[3] Dalmatian 55 
[4] Poodle  51 
[5] Maltese  4 
[6] Dalmatian 48 
[7] Poodle  56 

标准密度图将计算的出现为每一品种再输出一个漂亮的曲线#,因为这样的:

 dog.breed x 
[1] Labrador  1 
[2] Maltese  2 
[3] Dalmatian 2 
[4] Poodle  2 

但是我试图获得一个类似平滑曲线跟踪权重之和为每个品种,因为这样的:

 dog.breed x 
[1] Labrador  63 
[2] Maltese  10 
[3] Dalmatian 103 
[4] Poodle  107 

我可以通过建立的一系列点,例如在最后的例子中,然后将曲线拟合做到这一点。但这很麻烦。我希望有人知道干净的包装可以完成繁重的工作。

感谢您的帮助。

一些澄清:

如何另一个例子。假设我有50家商店,并且我知道每个赞助人以及他们每次来商店花费多少钱。商店中的顾客群的密度图将显示关于每个商店有多少人参加的信息。我正在寻找相同的情节,但所有人都在每家商店花了多少钱。咩?

+1

我不能告诉你试图在所有做什么。也许你可以提供一个完整的,可重复的例子来证明你到目前为止做了什么? – joran 2012-07-25 21:44:43

+0

您想通过独特的'dog.breed'来总结'weight.lbs'与获得'dog.breed'的频率分布吗? – 2012-07-25 22:03:26

+0

是的,这是正确的。 – dittle 2012-07-25 22:18:42

回答

3

如果使用的是基础R,你想看看aggregate

data <- read.table(text="dog.breed weight.lbs 
Labrador  63 
Maltese  6 
Dalmatian 55 
Poodle  51 
Maltese  4 
Dalmatian 48 
Poodle  56", header=TRUE,) 

aggregate(. ~ dog.breed, data=data, sum) 

# dog.breed weight.lbs 
#1 Dalmatian  103 
#2 Labrador   63 
#3 Maltese   10 
#4 Poodle  107 

如果你正在寻找一种方式,直接从数据绘制,而无需做任何事情,ggplot是你的朋友:

require(ggplot2) 
ggplot(data, aes(x=dog.breed, y=weight.lbs)) + 
    geom_bar(stat="identity") 

ggplot(data, aes(x=dog.breed)) + 
    geom_bar(aes(weight=weight.lbs)) 

对每个x的第一曲线图绘制多个y值,其中geom_bar缺省为position ARG一个"stack"值,从而使在X上的款项。第二个图表工作原因是geom_bar默认为stat_bin产生直方图,但规格为weight。双方产生相同的输出:

plot