2012-07-25 79 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